[英]How to optimize double select query
SELECT `id`, `field2`, `field3`, `field4` as Title FROM `articles`
WHERE `category_id` = 'X'
AND `id` NOT IN
(SELECT `articleid` FROM `article-seen` WHERE `userid` = 'Y')
我该如何优化呢? 我认为双重选择是不好的,但我是新来的MySQL
尝试使用JOIN将获得相同的结果,但使查询看起来更简单
优化取决于(我认为)取决于您使用的MySQL版本。
这是您将其编写为join
:
SELECT `id`, `field2`, `field3`, `field4` as Title
FROM `articles` a left outer join
`articles_seen` arts
on a.id = arts.articleid and arts.userid = 'Y'
where a.`category_id` = 'X' and
arts.id is null;
至少,此查询不会实现子查询,(我认为)您的原始查询可以。
为了使其更快,您想添加索引。 我想到的是: articles(category_id, id)
和articles_seen(userid, articleid)
。 您也可以将select
的字段添加到第一个索引,因此可以通过查看索引而不是返回主表来满足整个查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.