社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  DATABASE

MySQL查询优化

Michael Shnitzer • 7 年前 • 1862 次点击  

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

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 年前