1、索引
索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。
2、索引种类
索引合并,使用多个单列索引组合搜索
覆盖索引,select的数据列只用从索引中就能够取得,不必读取数据行,换句话说查询列要被所建的索引覆盖
3、相关命令
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
4、使用索引和不使用索引
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
5、正确使用索引
数据库表中添加索引后确实会让查询速度起飞,但前提必须是正确的使用索引来查询,如果以错误的方式使用,则即使建立索引也会不奏效。
即使建立索引,索引也不会生效:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
6、其他注意事项
1 2 3 4 5 6 7 8 9 |
|
7、limit分页
无论是否有索引,limit分页是一个值得关注的问题
?View Code
8、执行计划
explain + 查询SQL - 用于显示SQL执行信息参数,根据参考信息可以进行SQL优化
1 2 3 4 5 6 7 |
|
?详细
更多参见:
http://www.cnblogs.com/xiaoboluo768/p/5400990.html
http://dev.mysql.com/doc/refman/5.7/en/explain-output.html#jointype_system
9、慢日志查询
a、配置MySQL自动记录慢日志
slow_query_log = OFF ? ? ? ? ? ? ? ? ? ? ? ? ? ?是否开启慢日志记录
long_query_time = 2 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?时间限制,超过此时间,则记录
slow_query_log_file = /usr/slow.log ? ? ? ?日志文件
log_queries_not_using_indexes = OFF ? ? 为使用索引的搜索是否记录
注:查看当前配置信息:
? ? show variables like '%query%'
? ? ?修改当前配置:
set global 变量名 = 值
b、查看MySQL慢日志
mysqldumpslow -s at -a ?/usr/local/var/mysql/MacBook-Pro-3-slow.log
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
cnblogs.com/wupeiqi/articles/5716963.html