mysql索引简介

#查询数据表索引
SHOW INDEX FROM api_video_info;  
SHOW INDEX in api_video_info; 
#删除索引
DROP index index_api_video_info_url ON api_video_info;
#重建索引
#在常规的数据库维护操作中经常使用。在数据库运行了较长时间后,索引都有损坏的可能,这时就需要重建。对数据重建索引可以起到提高检索效率。
REPAIR TABLE api_video_info QUICK;
#在url字段上创建普通索引
CREATE INDEX index_api_video_info_url ON api_video_info(url);
innodb 单列索引长度不能超过767 bytes,联合索引限制是3072 bytes。对于创建innodb的组合索引中,如果各个列中的长度有单个超过767 bytes,也会创建失败;
myisam 单列索引长度、所创建的复合索引长度和都不能超过1000 bytes,否则会报错,创建失败。
#5.5以后,开始支持4个字节的uutf8。255×4>767, 于是增加了一个参数叫做 innodb_large_prefix。这个参数默认值是OFF。当改为ON时,允许列索引最大达到3072。
show variables like 'innodb_large_prefix';
另外不同字符集占用不同字节:latin一个字符占1 bytes,utf8存储一个字符占3 bytes, gbk存储一个字符2 bytes
#索引限制
1) MyISAM存储引擎索引键长度的总和不能超过1000字节;
2) BLOB和TEXT类型的列只能创建前缀索引;CREATE INDEX index_api_video_info_url ON api_video_info(url(200));#
3) MySQL 目前不支持函数索引;
4) 使用不等于(!= 或者 <>)的时候,MySQL 无法使用索引;
5) 过滤字段使用了函数运算(如abs(column))后,MySQL无法使用索引;
6) Join 语句中 Join 条件字段类型不一致的时候,MySQL 无法使用索引;
7) 使用LIKE操作的时候如果条件以通配符开始(如’%key…’)时,MySQL无法使用索引;
8) 使用非等值查询的时候,MySQL 无法使用 Hash 索引。
在使用索引的时候,须要注意上面的这些限制,尤其是要注意无法使用索引的情况,因为这很容易造成极大的性能隐患。

posted on 2016-05-17 13:47  robertsun  阅读(147)  评论(0编辑  收藏  举报

导航