sql索引

左心房为你撑大大i 提交于 2020-03-03 05:47:26

1、创建索引

create index index_name on table_name

删除索引

delete index index_name on table_name

2、B-tree索引和Hash索引

hash索引只在memory支持。当我们要给某张表某列增加索引时,将这张表的这一列进行哈希算法计算,得到哈希值,排序在哈希数组上。所以Hash索引可以一次定位,其效率很高,而Btree索引需要经过多次的磁盘IO。

但是它存在很多缺点:

~只能用于等式比较,不能查询范围。

~优化器不能用hash索引来加速Oder by操作。

~不能用部分索引键来搜索,因为组合索引在计算哈希值的时候是一起计算的。只能使用整个关键字来搜索一行。

~数据量特别大的时候,没有b-tree效率高。

3、建立索引的规则:

~利用最左前缀:Mysql会一直向右查找直到遇到范围操作(>,<,like、between)就停止匹配。比如a=1 and b=2 and c>3 and d=6;此时如果建立了(a,b,c,d)索引,那么后面的d索引是完全没有用到,当换成了(a,b,d,c)就可以用到。

~不能过度索引:在修改表内容的时候,索引必须更新或者重构,所以索引过多时,会消耗更多的时间。

~尽量扩展索引而不要新建索引

~最适合的索引的列是出现在where子句中的列或连接子句中指定的列。

~不同值较少的列不必要建立索引(性别)。

 

   

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!