gpt4 book ai didi

php - MySQL 从表 1 中选择不存在连接的行的有效方法

转载 作者:行者123 更新时间:2023-11-29 06:21:10 25 4
gpt4 key购买 nike

我为此尝试了很多答案,但没有一个对我有用。

Find records where join doesn't exist

Select * from table1 that does not exist in table2 with conditional

我有 2 个表。 1 是一个包含大约 50,000 个项目的项目表。第二个是超过 100,000 行的评级表。我想获得所有没有投票的项目。

我已经尝试了以下方法,它似乎是有效的,但它似乎卡住了,可能是因为它必须检查这么多记录。有没有更有效的方法来实现这一目标。

SELECT title FROM items LEFT JOIN itemvotes ON items.id = itemvotes.itemid WHERE itemvotes.vote IS NULL

我确信这个查询最终会返回结果,但我需要它是一个可以从 php 网页检查的快速的东西,所以它需要在几秒钟内加载。

只是为了确认。上面的查询用了 3 多分钟才返回结果。它有效,但速度太慢。

最佳答案

子查询可能会更快:

SELECT title FROM items
WHERE id NOT IN (
SELECT itemid
FROM itemvotes
)

当您执行外连接时,它首先连接然后搜索,因此它搜索 50,000 * 100,000 行。如果您执行子查询,它会查看最多 50,000 + 100,000。当然,您还必须确保在两个表上都有正确的索引。

关于php - MySQL 从表 1 中选择不存在连接的行的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215320/

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