gpt4 book ai didi

mysql - 查询优化,NOT IN

转载 作者:行者123 更新时间:2023-11-29 06:05:35 26 4
gpt4 key购买 nike

在页面上我有一个查询,这会降低页面加载速度。

SELECT * FROM users1 WHERE user_id NOT IN (SELECT user_id FROM users2)

USERS1 是包含网站所有用户的表,数据很多。USERS2 是互相关注的用户表。

因此,我需要选择一些尚未关注的用户。

有什么优化方法吗?

我正在发布真实的查询:

SELECT users.*
FROM (
SELECT user_id
FROM users
WHERE user_id!=156 AND user_id NOT IN (
SELECT follower_id
FROM following
WHERE user_id=156
) ORDER BY RAND() LIMIT 2
) AS temp
JOIN users ON users.user_id = temp.user_id;

user_id 字段上的索引。

查询花费了 0.0912 秒

此查询在数据较少的测试服务器上运行得不错,但在实时服务器上最多需要 3 秒。

最佳答案

左连接方式:

SELECT *
FROM users1
LEFT JOIN users2 ON users1.user_id = users2.user_id
WHERE users2.user_id IS NULL

不存在方式:

SELECT *
FROM users1
WHERE NOT EXISTS (SELECT 1 FROM users2 WHERE users1.user_id = users2.user_id)

工作示例:http://sqlfiddle.com/#!2/611f2/1

关于mysql - 查询优化,NOT IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11649556/

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