添加通配符时,SQL Server查询的速度显着下降(或顶部)
我有一个2千万只动物的动物园,可以在我的SQL Server 2005数据库中进行跟踪。其中约1%是黑色,其中约1%是天鹅。我想获取所有黑天鹅的详细信息,因此,不想淹没我所做的结果页面: select top 10 * from animal where colour like 'black' and species like 'swan' (是的,不建议您将这些字段设置为自由文本,但是它们都已编入索引)。事实证明,我们没有这种动物,因为查询会在大约300毫秒内返回空集。如果我使用'='而不是'like',它的速度大约是以前的两倍,但是我有一个预感,后者将为我节省一些输入时间。 事实证明,动物园的负责人认为他可能输入了一些“黑色”的天鹅,因此我相应地修改了查询: select top 10 * from animal where colour like 'black%' and species like 'swan' 事实证明,这些都不存在(事实上,除了“黑色”动物之外,没有“黑色%”动物),但是查询现在大约需要30秒才能返回空值。 看来这只是“ top”和“ like%”的组合造成麻烦,尽管 select count(*) from animal where colour like 'black%' and species like 'swan' 很快返回0,甚至 …