【发布时间】:2009-10-08 13:05:35
【问题描述】:
我分两步运行 MYSQL 查询。首先,我通过一个查询获得一个 id 列表,然后我使用第二个查询检索这些 id 的数据,类似于SELECT * FROM data WHERE id in (id1, id2 ...)。我知道这听起来很老套,但我这样做是因为查询非常复杂;第一个涉及很多几何和触发计量,第二个涉及很多不同的连接。我确信它们可以写在一个查询中,但我的 MYSQL 还不够好,无法完成。
这种方法有效,但它感觉不对;另外我担心它不会扩展。目前我正在测试一个包含 10,000 条记录的数据库,“IN”子句中有 400 个 id(即 IN (id1, id2 ... id400) )并且性能很好。但是如果有 1,000,000 条记录呢?
这种查询的性能瓶颈(速度、内存等)在哪里?关于如何重构这种查询的任何想法也很棒。 (例如,如果值得关注存储过程)。
【问题讨论】:
-
你为什么不提供更多的查询细节?
-
我想我不是在询问任何特定的查询;而只是原则上使用带有巨大参数列表的“IN”是一个好主意
标签: mysql performance