我是MySQL性能分析的新手。我发现我的系统中的连接查询最近变得缓慢(~4个表为3.52s,每个表有~1000-2000行)。我用phpmyadmin查看了性能分析。结果如下所示:
1起始170μs
2个开放表44μs
3系统锁定7μs
4表锁7μs
5初始值65μs
6优化20μs
7统计92μs
8准备31μs
9创建Tmp表236μs
10执行2μs
11复制到Tmp表68μs
12优化10μs
13统计14μs
14准备3.5秒
15创建排序索引2.6 ms
16复制到组表15.9 ms
17排序结果2.1 ms
18发送数据391μs
19结束7μs
20去除Tmp表1.3 ms
21结束3μs
22去除Tmp表819μs
23结束10μs
24查询结束2μs
25个解放物品20μs
26去除Tmp表6μs
27个解放物品365μs
28记录慢查询3μs
29清理6μs左右
我不明白为什么Preparing
阶段成本为3.5秒。我怎样才能减少它?
答案 0 :(得分:2)
我会在答案中大肆猜测,你可能不会使用任何索引。
在SQL优化中,Indexing is a broken cheat,如konami-code
中的contra
或doors
中的age of empire
。
无论如何,尝试在您的数据库中添加一些索引,然后回到我们身边,并对您的准备阶段现在的速度感到惊讶。