相同的SQL查询WHERE搜索条件。查询值略有不同。不同的表现。为什么?

问题描述 投票:0回答:1

有一个表,其中包含大约 1,000,000 条记录。 我得到了两个略有不同的 WHERE 条件(只是有点不同)。但是它导致 10 倍的运行时间。有时甚至导致超时...... 我正在使用 C# winform 连接 SQL Server 2008 并获取数据

SELECT * FROM clothes WHERE clothes_name >='8PTO1059-1FA' AND clothes_name <='8PTO1059-1FAZZZZZ'
SELECT * FROM clothes WHERE clothes_name >='8PTO1059-1' AND clothes_name <='8PTO1059-1ZZZZZ'
SELECT * FROM clothes WHERE clothes_name >='8PTO1059' AND clothes_name <='8PTO1059ZZZZZ'
SELECT * FROM clothes WHERE clothes_name >='8PTO1059-1F' AND clothes_name <='8PTO1059-1FZZZZZ' 

第一个块的查询比第二个块的查询更快...唯一的区别是“1F”。 理论上,第一个查询应该更慢。因为它搜索更多,并且条件并不比第二个查询更清晰。

我真的不知道为什么。请帮助我。谢谢。

c# sql sql-server winforms
1个回答
0
投票

非常有趣的是,SQL 查询中的微小变化会带来不同的性能。

一种可能性是衣服名称列上有索引。根据索引的结构方式,一个查询可能比另一个查询更有效地利用它。例如,如果索引按升序聚集并排序,则查询“8PTO1059-1FA”可能比“8PTO1059-1”更快。 SQL Server 或许能够更有效地直接查找“8PTO1059-1FA”定义的范围的开头。

© www.soinside.com 2019 - 2024. All rights reserved.