私は何千ものレコードを含むテーブルを持っています。以下のクエリを使用して 30 秒で結果を取得していますが、動作が非常に遅いです。どうすればもっとうまくやれるでしょうか?
WITH cte AS
(select
ROW_NUMBER() OVER(ORDER BY sb.nbofviews desc) AS ROW,
sb.ImageId, sb.LicenceType, sb.ImgCollection, sb.nbofviews,
sb.orientation, sb.shootdate, sd.ImgName, sd.Caption, sd.ImgPath,
sd.ImageType, sd.ImgHoverPath, sc.image_color
from
SearchBrain sb,SearchDetails sd, searchcolors sc
where
sc.Imageid = sd.Imageid
and sb.ImageId = sd.ImageId
and sd.imageid in (select ImageId
from SearchInitial
where Primarykeyword =
(Select top 1 Primary_kwd
from p2_kwdmgmt
where all_kwd = 'man')
intersect
select ImageId
from SearchInitial
where Primarykeyword =
(Select top 1 Primary_kwd
from p2_kwdmgmt
where all_kwd = 'jumping')
intersect
select ImageId
from SearchInitial
where Primarykeyword =
(Select top 1 Primary_kwd
from p2_kwdmgmt
where all_kwd = 'beach')
)
)
SELECT *
FROM cte
WHERE ROW BETWEEN 0 AND 31