12

在以下查询中:

SELECT column_a, column_b FROM table_a WHERE
    column_b IN (SELECT b_id FROM table_b)

子查询是否SELECT b_id FROM table_b由 SQL 解析器缓存,或者提前执行查询是否会更快,将其保存为变量(例如在 PHP 中),然后将这些值作为 CSV 字符串传递?

例如

SELECT column_a, column_b FROM table_a WHERE
    column_b IN (1,3,4,6,8,10,16,18)
4

1 回答 1

6

查看 usingEXPLAIN EXTENDED以充分说明对子查询的影响。

例如:

EXPLAIN EXTENDED
SELECT column_a, column_b FROM table_a WHERE
    column_b IN (SELECT b_id FROM table_b)

如果它们没有产生您希望的缓存结果,您可能有兴趣将它们存储在内存中(memcacheredis)、文件中(使用PHP 文件库)或单独的 SQL 缓存本身。

于 2012-08-08T16:00:58.817 回答