トップ100で約2秒で実行されるクエリを作成しました。この正確なクエリのストアドプロシージャを作成すると、実行に12〜13秒かかります。
なぜでしょうか?
- 要素テーブル数 = 2309015 (指定されたユーザー ID = 326969)
- 一致するテーブル数 = 1290 (指定されたユーザー ID = 498)
- サイト テーブル数 = 71 (指定されたユーザー ID = 9)
コード
with search (elementid, siteid, title, description, site, link, addeddate)
as
(
select top(@top)
elementid,
elements.siteid, title, elements.description,
site =
case sites.description
when '' then sites.name
when null then sites.name
else sites.name + ' (' + sites.description + ')'
end,
elements.link,
elements.addeddate
from elements
left join sites on elements.siteid = sites.siteid
where title like @search and sites.userid = @userid
order by addeddate desc
)
select search.*, isnull(matches.elementid,0) as ismatch
from search
left join matches on matches.elementid = search.elementid