MYSQL索引
Mysql索引四种索引
主键索引
例如:alter table 表名 add primary key (列名);
例如:id int unsigned primary key auto_increment
唯一索引
例如:create unique index 索引名 on 表名 (列表..);
普通索引
例如:create index 索引名 on 表 (列1,列名2);
全文索引【MyISAM】引擎
Mysql查询索引的方式
desc 表名 【该方法的缺点是: 不能够显示索引名.】
show index(es) from 表名
show keys from 表名
索引的代价
1. 占用磁盘空间
2. 对dml操作有影响,变慢
复合索引左前缀规则
1.左前缀原则
2.like的关键字最前面不能使用 % 或者 _这样的字符.如果一定要前面有变化的值,则考虑使用 全文索引->sphinx.
3.有OR查询 就是要求使用的所有字段,都必须建立索引, 我们建议大家尽量避免使用or 关键字
4.列类型是字符串,一定要加引号否则不使用索引。
执行计划
explain 【SQL语句】\G
例如:explain select * from dept where loc=‘aaa’\G
索引使用的情况查询
show status like ‘Handler_read%’;
大家可以注意:
handler_read_key:这个值越高越好,越高表示使用索引查询到的次数。
handler_read_rnd_next:这个值越高,说明查询低效。