Mysql索引的一些总结

点滴的积累何时汇成江河...


以系统用户表为例

Mysql用户单表数据在7oo万数据量时,进行用户的查询操作时的一些索引测试

1、索引的基本用法

  • 查询索引
show index from table_name 
  • 添加索引
CREATE INDEX name ON table_name (column_list)
eg: CREATE INDEX first_index_name ON table1(tb_name,tb_code);
ALTER TABLE table_name  ADD INDEX union_index_name(column1,column2,column3)
eg: ALTER TABLE table1 ADD INDEX first_union_index(tb_id,tb_name,tb_code)
  • 删除索引
ALTER TABLE   table_name  DROP INDEX   index_name
eg:  ALTER TABLE   table1  DROP INDEX   first_union_index

2、条件字段使用索引情况对比

  • 条件字段包含主键(查询方式使用主键索引)
EXPLAIN SELECT * FROM `sys_user` where id= 888
分析结果
  • 条件字段包含联合索引的第一个字段(查询方式使用联合索引)
EXPLAIN SELECT * FROM `sys_user` where tb_name= '用户1'
  • 条件字段包含联合索引的非第一个字段(查询方式不使用联合索引)
EXPLAIN SELECT * FROM `sys_user` where tb_code= 'aabbcc'
  • 条件字段模糊查询百分号在尾(查询方式使用索引)
EXPLAIN SELECT * FROM `sys_user` where name like '用户%'
分析结果
  • 条件字段模糊查询百分号在首(查询方式不使用索引)
EXPLAIN SELECT * FROM `sys_user` where name like '%用户%'
分析结果

3、总结

Mysql中可以建立单值索引,联合索引。当条件字段包含的单值索引字段和联合索引第一个字段时,使用单值索引。当条件字段包含联合索引的第一字段时使用联合索引,只包含联合索引的非第一字段时,不使用联合索引。主键索引的优先级最高。
查询走索引的速度远远高于不走索引的速度。
该文包含了EXPLAIN的使用,下回详细分解EXPLAIN的使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容