php - MySql "Preparing"花费太多时间

标签 php mysql performance

我是 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/

相关文章:

php - MySQL 列的整数值 '' 不正确且允许空值?

android - 在 Android 中绘制(过滤)100k+ 点到 MapView

java - 从 SortedMap 的头部删除多个项目的性能

javascript - 最好在 javascript 或着色器中乘以矩阵?

php - 在 htaccess 中禁用 php 函数

php - Symfony 4,从 Controller 获取.env参数,这可能吗?如何?

php - 在 JavaScript 函数中调用 PHP 文件更新 MYSQL 表?

php - 将数组保存到数据库但被序列化为字符串

java - 插入行 SPRING + Hibernate 时的 MySql 编码问题

php - 如何访问其他用户的数据?