Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL是从表1中选择不存在联接的行的有效方法_Php_Mysql - Fatal编程技术网

Php MySQL是从表1中选择不存在联接的行的有效方法

Php MySQL是从表1中选择不存在联接的行的有效方法,php,mysql,Php,Mysql,我尝试了很多答案,但没有一个对我有用 我有两张桌子。1是一个包含大约50000个项目的项目表。第二个是超过100000行的评级表。我想得到所有没有投票权的项目 我尝试了以下方法,它似乎是有效的,但似乎冻结了,可能是因为它必须检查这么多记录。有没有更有效的方法让我实现这一目标 从items LEFT中选择标题JOIN itemvotes ON items.id= itemvotes.itemid,其中itemvotes.vote为空 我确信这个查询最终会返回结果,但我需要这是一个快速的东西,可

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

我有两张桌子。1是一个包含大约50000个项目的项目表。第二个是超过100000行的评级表。我想得到所有没有投票权的项目

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

从items LEFT中选择标题JOIN itemvotes ON items.id= itemvotes.itemid,其中itemvotes.vote为空

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


我只是想确认一下。上面的查询返回结果花费了3分钟以上。它是有效的,但太慢了。

子查询可能会更快:

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

当您执行外部联接时,它首先联接然后搜索,因此它搜索50000*100000行。如果您执行子查询,它的最大值为50000+100000。当然,您还必须确保在两个表上都有适当的索引。

为什么不使用以下内容:

 SELECT * FROM `table1` WHERE `id` NOT IN SELECT `table1_id` FROM `table2`

表1\u id当然是外键。

能否提供
项目
项目投票
的表定义?特别是包括标记。