gpt4 book ai didi

mysql - 在 MySQL 中重用单个 SELECT 查询的结果

转载 作者:可可西里 更新时间:2023-11-01 07:07:54 25 4
gpt4 key购买 nike

我有这个查询,这是一个总共包含 3 个 SELECT 的查询:

SELECT a
FROM tbl
WHERE b IN ((SELECT a FROM tbl WHERE b = 44))
AND NOT a IN ((SELECT a FROM tbl WHERE b = 44))

查询

SELECT a FROM table WHERE b = 44

完全一样,我猜数据库运行了这 2 次,尽管由于缓存等原因第二次应该更快。

在 SQL 或特定于 MySQL 的东西中,有没有一种方法可以重复使用第一个执行查询的结果的 100%?

或者关于如何加速此查询的任何其他想法?

我正在使用 MySQL 5.7。

最佳答案

避免子查询并使用连接(应该使用索引并且更有效)。

SELECT tbl1.a
FROM tbl tbl1
INNER JOIN tbl tbl2 ON tbl1.b = tbl2.a AND tbl2.b = 44
LEFT OUTER JOIN tbl tbl3 ON tbl1.a = tbl3.a AND tbl3.b = 44
WHERE tbl3.a IS NULL

根据您是否可以在连接上获得多个匹配项,您可能需要在 SELECT 之后使用 DISTINCT。

关于mysql - 在 MySQL 中重用单个 SELECT 查询的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35500978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com