点滴的积累何时汇成江河...
以系统用户表为例
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的使用