Py学习  »  DATABASE

MySQL查询优化

Michael Shnitzer • 7 年前 • 1864 次点击  

我执行的查询是在一个表中查找不在另一个表中的值。例如:

SELECT id FROM table1 WHERE id NOT IN (SELECT id FROM table2);

两个表都有大约100万行,但只有几百行与结果集中返回的值不匹配。查询大约需要35秒。在查询上做一个show profile显示MySQL大部分时间都处于“准备”状态。关于如何优化这种状态,或者“准备”期间实际发生了什么,有什么想法吗?

两个表中的ID值都已编入索引,并且具有相同的类型和大小。

查询的整个配置文件是:

+--------------------------------+----------+
| Status                         | Duration |
+--------------------------------+----------+
| (initialization)               | 0        | 
| checking query cache for query | 0        | 
| Opening tables                 | 0.13     | 
| System lock                    | 0        | 
| Table lock                     | 0        | 
| init                           | 0.01     | 
| optimizing                     | 0        | 
| statistics                     | 0        | 
| preparing                      | 0        | 
| executing                      | 0        | 
| Sending data                   | 0        | 
| optimizing                     | 0        | 
| statistics                     | 0        | 
| preparing                      | 34.83    | 
| end                            | 0        | 
| query end                      | 0        | 
| freeing items                  | 0        | 
| closing tables                 | 0        | 
| logging slow query             | 0        | 
+--------------------------------+----------+

任何小费都很感激。

谢谢。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/30358
文章 [ 3 ]  |  最新文章 7 年前