gpt4 book ai didi

mysql - 加速(重写?)不在子选择查询中

转载 作者:行者123 更新时间:2023-11-30 21:53:52 29 4
gpt4 key购买 nike

从我试图得到的表中

a) 满足特定条件的用户,这些条件保存在表中的键/值组合中

b) 根本没有那个键/值组合的用户

因此,例如,要尝试查找居住在法国或尚未添加位置的用户,我使用以下(简化的)查询:

SELECT *
FROM
current_users
JOIN current_users um_location ON current_users.id = um_location.id
WHERE
(
( um_location.meta_key = 'location' AND um_location.meta_value = 'France' )
OR
( current_users.id NOT IN
(SELECT current_users.id FROM current_users WHERE current_users.meta_key = 'location' )
)
)

当然,问题是运行 OR 子选择查询(如果这就是它的名称)会极大地减慢查询速度。由于整个查询有大约 5 或 6 个这样的子选择,因此它会大大降低速度。

也许还有另一种方法可以做到这一点?更快的方法?

最佳答案

将 OR 条件更改为 UNION 查询而不是 OR

SELECT * FROM
current_users
JOIN current_users um_location ON current_users.id = um_location.id
WHERE
um_location.meta_key = 'location' AND um_location.meta_value = 'France'
UNION
SELECT * FROM
current_users
JOIN current_users um_location ON current_users.id = um_location.id
WHERE
current_users.id NOT IN
(SELECT current_users.id FROM current_users WHERE
current_users.meta_key='location' )

关于mysql - 加速(重写?)不在子选择查询中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46060494/

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