sql索引

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子句中的列或连接子句中指定的列。

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

 

   

posted @ 2017-09-19 11:45  兔子兔子0125  阅读(87)  评论(0编辑  收藏  举报