SQL Server 2005 - 选择性能 - WHERE和NULL

时间:2013-07-10 20:30:53

标签: sql performance tsql sql-server-2005 database-performance

我有以下问题:

SQL Server 2005

  • 表:文件
  • 记录:400'000
  • 字段值不是索引
  • 查询:

    SELECT * FROM Documents WHERE value = 0  
    

案例A:

  • 所有400'000条记录的值= NULL
  • Performance = X Seconds

案例B:

  • 200'000条记录的值= NULL
  • 200'000条记录具有价值<> NULL
  • 表现= X + Y秒

案例C:

  • 400'000条记录具有价值<> NULL
  • 表现= X + Y + Z秒

这是一种常见的行为,还是我必须在其他地方搜索表现度的原因?

1 个答案:

答案 0 :(得分:1)

您几乎肯定没有value列的索引。鉴于这种假设,您的结果并不令人惊讶。 NULL在内部存储为一个单独的位,比执行数字比较更容易查找(和拒绝)。

如果你有一个索引,那么我会对这些结果感到有些惊讶。如果您发布关于表格(列宽)的确切数据,以及您看到的结果而不是“X,Y和Z”,它也会有所帮助。和往常一样,在检查性能问题时查看查询计划