[英]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.