开启慢查询日志
set global log_slow_queries=on; #打开日志
set global log_output='Table,File';set global long_query_time=3.000 #超过3秒视为慢查询
查询某个时间时间以来的慢查询语句
select * from mysql.slow_log where start_time > '2014-05-07 15:10:00' order by query_time desc limit 100;
分析语句,进行优化
explain 有where的语句,通常需要按照实际情况添加索引
多列索引:
MySQL可以为多个列创建索引。一个索引可以包括15个列。对于某些列类型,可以索引列的左前缀,列的顺序非常重要。
多列索引可以视为包含通过连接索引列的值而创建的值的排序的数组。一般来说,即使是限制最严格的单列索引,它的限制能力也远远低于多列索引。
最左前缀
多列索引有一个特点,即最左前缀(Leftmost Prefixing)。假如有一个多列索引为key(firstname lastname age),当搜索条件是以下各种列的组合和顺序时,MySQL将使用该多列索引:
firstname,lastname,age
firstname,lastname
firstname
也就是说,相当于还建立了key(firstname lastname)和key(firstname)。