【问题标题】:SQL Server 2005 - Select Performance - WHERE and NULLSQL Server 2005 - 选择性能 - WHERE 和 NULL
【发布时间】:2013-07-08 22:54:41
【问题描述】:

我有以下问题:

SQL Server 2005

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

    SELECT * FROM Documents WHERE value = 0  
    

案例一:

  • 所有 400'000 条记录的值 = NULL
  • 性能 = X 秒

案例 B:

  • 200'000 条记录的值 = NULL
  • 200'000 条记录具有值 NULL
  • 性能 = X + Y 秒

案例 C:

  • 400'000 记录有值 NULL
  • 性能 = X + Y + Z 秒

这是一种常见的行为,还是我必须在其他地方搜索性能等级的原因?

【问题讨论】:

  • 运行SET STATISTICS IO ON;SET STATISTICS TIME ON; 并发布案例的输出而不是字母表中的字母。
  • 这有点难,因为它是我无法访问的生产数据库。假设性能下降了 30%。

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


【解决方案1】:

您几乎可以肯定在value 列上没有索引。鉴于此假设,您的结果并不令人惊讶。 NULL 在内部存储为单独的位,与执行数字比较相比,查找(和拒绝)更简单。

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

【讨论】:

    猜你喜欢
    • 2010-10-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多