Roy*_*Roy 23 mysql performance
我分两步运行MYSQL查询.首先,我得到一个带有一个查询的id列表,然后使用第二个查询检索这些id的数据SELECT * FROM data WHERE id in (id1, id2 ...).我知道这听起来很糟糕,但我这样做是因为查询非常复杂; 第一个涉及大量的几何和触发测量,第二个涉及许多不同的连接.我确信它们可以写在一个查询中,但是我的MYSQL还不够好.
这种方法有效,但感觉不对; 加上我担心它不会扩展.目前我正在测试10,000个记录的数据库,在"IN"子句中有400个ID(即IN (id1, id2 ... id400))并且性能很好.但如果说有1,000,000条记录怎么办?
这种查询的性能瓶颈(速度,内存等)在哪里?关于如何重构这种查询的任何想法都很棒.(例如,如果值得对存储过程进行swot).
Qua*_*noi 19
从一定数量的记录开始,a上的IN谓词SELECT变得比常量列表上的谓词快.
在我的博客中查看此文章以进行性能比较:
如果IN子句中的查询中使用的列被索引,如下所示:
SELECT *
FROM table1
WHERE unindexed_column IN
(
SELECT indexed_column
FROM table2
)
Run Code Online (Sandbox Code Playgroud)
,然后这个查询只是优化到一个EXISTS(它使用每个记录的一个条目table1)
不幸的是,MySQL无法做到HASH SEMI JOIN或MERGE SEMI JOIN哪些更有效(特别是如果两列都被索引).
| 归档时间: |
|
| 查看次数: |
20100 次 |
| 最近记录: |