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
答案 0 :(得分:0)
尝试使用JOIN来获得相同的结果,但使查询看起来更简单
答案 1 :(得分:0)
优化取决于(我认为)你正在使用的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
中的字段添加到第一个索引,因此可以通过查看索引来满足整个查询,而不是返回到主表。