我是 MySQL 性能分析的新手。我发现我的系统中的联接查询最近变得很慢(约 4 个表需要 3.52 秒,每个表有约 1000-2000 行)。我用phpmyadmin查看了性能分析。结果如下所示:
1 Starting 170 µs
2 Opening Tables 44 µs
3 System Lock 7 µs
4 Table Lock 7 µs
5 Init 65 µs
6 Optimizing 20 µs
7 Statistics 92 µs
8 Preparing 31 µs
9 Creating Tmp Table 236 µs
10 Executing 2 µs
11 Copying To Tmp Table 68 µs
12 Optimizing 10 µs
13 Statistics 14 µs
14 Preparing 3.5 s
15 Creating Sort Index 2.6 ms
16 Copying To Group Table 15.9 ms
17 Sorting Result 2.1 ms
18 Sending Data 391 µs
19 End 7 µs
20 Removing Tmp Table 1.3 ms
21 End 3 µs
22 Removing Tmp Table 819 µs
23 End 10 µs
24 Query End 2 µs
25 Freeing Items 20 µs
26 Removing Tmp Table 6 µs
27 Freeing Items 365 µs
28 Logging Slow Query 3 µs
29 Cleaning Up 6 µs
我不明白为什么准备
阶段需要3.5秒。我怎样才能减少它?
最佳答案
我将在我的答案中进行大胆猜测,您可能不使用任何索引。
在 SQL 优化中,Indexing is a broken cheat ,就像魂斗罗
中的konami-code
,或者帝国时代
中的doors
。
无论如何,尝试在您的数据库中添加一些索引,然后回到我们这里,您会惊讶于您的准备阶段现在的速度有多快。
关于php - MySql "Preparing"花费太多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29940305/