当一个SQL慢的时候,我们第一步是先看执行计划
explain select ....
从计划中我们可以看出SQL是否有使用索引,在extra列可以看出额外还有哪些性能开销,最常见的是where,temporary, filesort...
where可以忽略,另两个如果对性能有制约就要想办法去规避了。
如果索引用不上,也可以尝试用from table_name force index(index_name)试试
注意index_name必需是在possible_key中的一个
下面我们可以进一步的去看一下SQL在执行过程中在哪些地方耗时较大
可以使用profile来查看SQL的具体执行情况
开启profile
set profiling=on
select ...
show profiles;
show profile all for query profile_id;
explain select ....
从计划中我们可以看出SQL是否有使用索引,在extra列可以看出额外还有哪些性能开销,最常见的是where,temporary, filesort...
where可以忽略,另两个如果对性能有制约就要想办法去规避了。
如果索引用不上,也可以尝试用from table_name force index(index_name)试试
注意index_name必需是在possible_key中的一个
下面我们可以进一步的去看一下SQL在执行过程中在哪些地方耗时较大
可以使用profile来查看SQL的具体执行情况
开启profile
set profiling=on
select ...
show profiles;
show profile all for query profile_id;