表(简体)SQL查询优化的帮助,请
媒体表
mediaID description multimediaGroupID silolID fcsPathHigh fcsPathLow
----------------------------------------------------------------------------------
1 media1 11 6 blah blah
2 media2 12 6 blah blah
MultimediaGroup表
multimediaGroupID multimediaGroup isPollGroup
------------------------------------------------
11 You be the ref 1
12 Try of the week 1
得到这个查询,我知道是不是最佳的。我不喜欢它中的子查询。
SELECT top 30 *
FROM media
WHERE (remoteMedia = 1) AND multimediaGroupID <> 13 AND siloID <> 16
AND siloID = 1 AND (fcsPathHigh like '%.flv' AND fcsPathLow like '%.flv')
AND (multimediagroupid is null or multimediagroupid not in
(select multimediagroupid
from multimediagroups
where ispollgroup = 1))
ORDER BY dateUploaded DESC
任何人都可以提出一个方法来优化它没有下面的子查询部分:
and (multimediagroupid is null
or multimediagroupid not in
(select multimediagroupid
from multimediagroups
where ispollgroup = 1))
我也想用用它(NOLOCK),因为它运行得只是加快它的有时速度慢,并有可能导致服务器崩溃。
子查询是不太可能造成您的问题(虽然我会用'不能代替EXISTS'而不是' NOT IN')。这个问题看起来是所有不可判断的谓词(''LIKE'带有前导通配符,'''''')。 。看看执行计划。 –