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子句中的列或连接子句中指定的列。
~不同值较少的列不必要建立索引(性别)。
来源:https://www.cnblogs.com/haley0125/p/7512141.html