我目前正在尝试编写一个查询来筛选我们的ERP数据库,当我删除一个过滤条件时,我发现速度非常奇怪。为什么这些SQL查询之间的速度差异?
这是查询看起来像之前(花了一秒钟即可完成,通常为10返回随时随地数百记录取决于订单和项目上少)
SELECT TOP 1000 jobmat.job, jobmat.suffix, jobmat.item, jobmat.matl_qty,
jobmat.ref_type, jobmat.ref_num, spec.NoteContent, spec.NoteDesc,
job.ord_num, jobmat.RowPointer
FROM jobmat
INNER JOIN ObjectNotes AS obj ON obj.RefRowPointer = jobmat.RowPointer
INNER JOIN SpecificNotes AS spec ON obj.SpecificNoteToken = spec.SpecificNoteToken
INNER JOIN job ON job.job = jobmat.job AND job.suffix = jobmat.suffix
WHERE ord_num LIKE '%3766%' AND ref_type = 'P' AND
(spec.NoteDesc LIKE '%description%' OR spec.NoteContent LIKE '%COMPANY%DWG%1162402%')
而这就是我改变了WHERE语句太:
WHERE ord_num LIKE '%3766%' AND ref_type = 'P' AND
spec.NoteContent LIKE '%COMPANY%DWG%1162402%'
它运行后作出这一modifcation我撞到了运行时喜欢9秒(正常返回1-3记录)。有没有一个明显的原因,我错过了?我原以为这同样应该大致相同。任何帮助是极大的赞赏!
编辑:我已经运行这个查询的两个版本多次测试,并且运行时间相当一致; <版本1为1秒,版本2为9秒。
您是否多次运行此查询?因为性能还可能取决于机器上发生的其他事情。 –
什么是您正在使用的DBMS,也可以粘贴两个版本的执行计划 – TheGameiswar
@WillemVanOnsem我已经多次运行两个版本,并且运行时间对每个版本都是一致的。 – padleyj