Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.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
Sql 优化不在左外联接_Sql_Ruby On Rails_Postgresql - Fatal编程技术网

Sql 优化不在左外联接

Sql 优化不在左外联接,sql,ruby-on-rails,postgresql,Sql,Ruby On Rails,Postgresql,我想获取用户未看到的前10个问题。 为了做到这一点,我需要将该用户看到的问题存储到一个名为user_questions的表中 因此,我现在的问题是: 选择*从问题中,其中questions.id不在中选择问题\u id从用户\u问题中,其中用户\u id=1限制0,10 据我所知,与类似的联接查询相比,此查询应该较慢。如何构造产生相同结果的联接查询?等效联接查询是: select q.* from questions q left outer join user_questions

我想获取用户未看到的前10个问题。 为了做到这一点,我需要将该用户看到的问题存储到一个名为user_questions的表中

因此,我现在的问题是:

选择*从问题中,其中questions.id不在中选择问题\u id从用户\u问题中,其中用户\u id=1限制0,10


据我所知,与类似的联接查询相比,此查询应该较慢。如何构造产生相同结果的联接查询?

等效联接查询是:

select q.*
from questions q left outer join
     user_questions uq
     on uq.question_id = q.id and
        uq.user_id = 1
where uq.user_id is null
limit 0, 30

不过,需要注意的是,结果不会是随机的。通常使用limit子句,还可以指定order by。

等效的联接查询是:

select q.*
from questions q left outer join
     user_questions uq
     on uq.question_id = q.id and
        uq.user_id = 1
where uq.user_id is null
limit 0, 30

不过,需要注意的是,结果不会是随机的。通常带有限制条款,您还可以指定一个订购人。

只想询问您在这方面的经验:如果我有20000行用于每个表的问题和用户问题,您认为不在会更快还是左外联接会更快?只想询问您在这方面的经验:您认为不在会更快还是左外联接会更快每个表问题和用户问题20000行?