1.MySQL索引类型
MySQL目前只支持4种类型的索引:全文、b树、散列、r树
B树索引应该是MySQL中最广泛的索引了,只不过基本上所有的存储引擎都支持它。
1.全文索引
MySQL中仅支持全文,支持全文的字段只有char、text数据类型。
全文主要用来替代像“%***%”这样的低效率问题
2.b树索引
中的b树的形式与
这里有两种形式:一种是键形式,叶子节点存储数据,不仅存储索引键的数据,还存储其他字段的数据。第二种是index,它的叶子节点与普通的b树类似,只不过它也存储了指向主键的信息。
在 中,主键与其他的没有太大区别。但不同的是,叶子节点中存储的信息不是主键信息,而是指向数据文件中对应数据行的信息。
3. 哈希索引
目前我所知道的是ndb支持这种索引。
由于其结构,哈希索引对于每个查询都会立即到位,这与 B 树不同,B 树是一点一点前进的。因此,hash索引的效率比b树高,但hash也有缺点,主要如下:
(1) 由于存储的是哈希值,因此仅支持and in运算。
(2)哈希索引不能通过操作索引来排序。这是因为存储时进行了哈希计算,但计算出的哈希值不一定等于存储的哈希值,因此无法排序。
(3) 组合时,不能在零件上使用索引。
(4) 全表扫描无法避免,但由于表支持非唯一值哈希索引,即不同索引键可能具有相同的哈希值。
(5)当存在大量相同的哈希值时,哈希索引的效率会变低。
4. r树索引
R-tree在MySQL中很少使用,仅支持数据类型。支持这种类型的存储引擎只有 bdb、ndb。
与b树相比,r树的优点是范围搜索。
2、mysql中sql语句值得注意的事情
1.这里所有key的长度只支持1000字节,即767。
2. Blob 和文本字段仅支持前缀索引。
3.当使用!=和不等于时,mysql不使用索引。
4.当某个字段使用函数时,mysql无法使用索引; join时条件字段类型不一致时,mysql无法使用索引;当使用组合索引中第一个索引以外的索引时,它不会使用该索引。
5、使用like时,索引以%开头,即“%***”。使用or时,or之前和之后的字段需要有索引。
有时mysql查询会认为使用索引不是最优计划,因此不使用索引。您可以在SQL语句中使用use和force索引。当然,有时候使用并不比不使用快,所以需要忽略索引方法是index。
关闭查询缓存
* 从 ;
这样可以防止一些很少使用的语句被放入缓存中,搜索时不会在缓存中搜索到;对应的方法是强制缓存。
* 从 ;
另外,如果f中设置=2,则只有使用完后才会使用缓存;
mysql中还有一个优先级操作,可以让mysql对这条语句进行优先级排序。
*;
对应的是;
mysql中也存在延迟插入的情况
进入 ....;
#提交后mysql返回ok,但是并没有立即插入,而是等mysql空闲的时候插入。如果服务器在等待时崩溃,所有数据都会丢失,并且插入不会返回自增id。
3、几种技巧
1.强制连接顺序:
., .从哪里 …
从上面的SQL语句可以看出,通过强制MySQL按顺序连接表。如果您认为按照自己的顺序连接比按照 MySQL 推荐的顺序连接更高效,则可以确定连接顺序。
2.强制使用临时表:
* 从哪里 …
当我们查询的结果集中数据很多时,我们可以使用选项强制将结果集放入临时表中,这样可以快速释放MySQL表锁(以便其他SQL语句可以查询这些记录) ) ),并且可以长时间为客户端提供大型记录集。
3. 使用临时表进行分组
, COUNT(*) 来自 GROUP BY ;
通常用于分组或关键字,该选项告诉MySQL将查询结果放入临时表中,甚至在必要时在临时表中对它们进行排序。或多或少,很少使用。
扫一扫在手机端查看
-
Tags : mysql索引方法 hash btree
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。