簡體   English   中英

如何優化雙選查詢

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM