gpt4 book ai didi

mysql - 存储结果的 WHERE 子句

转载 作者:行者123 更新时间:2023-11-29 20:12:22 24 4
gpt4 key购买 nike

假设我有一个查询,我想存储它,例如:

SET @v1 := (SELECT * FROM users);
SELECT @v1;

在某些情况下,此查询会非常复杂(大量联接、聚合等),有时我需要执行完全相同的查询,但添加了 WHERE子句(该查询将给出前一个查询的子集)。像这样的东西:

SELECT * FROM users WHERE isAdmin = true

我不想再次执行查询,我想使用上一个查询的结果(这样我就可以跳过再次执行又长又复杂的查询),类似于(这不起作用):

SELECT * FROM @v1 WHERE isAdmin = true

我该怎么做?

最佳答案

我唯一能想到的就是使用 TEMPORARY TABLE (仅对当前 session 可见)例如

create temporary table v1 (index (isAdmin)) as
(
select *
from users
);

然后您可以从此临时表中执行选择:

select * from v1 where isAdmin=true;

当然,如果查询很复杂并且需要很长时间执行,但它只返回很少的记录,那么这可能是一个好主意。否则,它可能比执行两次原始查询更昂贵(优化器可能能够使用适当的索引在更短的时间内运行第二个查询)。

关于mysql - 存储结果的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39998446/

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