代码之家  ›  专栏  ›  技术社区  ›  Nguyễn Hải Triều

SQL Server-谓词和查找谓词位于同一列上

  •  3
  • Nguyễn Hải Triều  · 技术社区  · 7 年前

    我的表有一个非聚集索引: IX_columnA_columnB

    CREATE INDEX IX_columnA_columnB ON table (columnA, columnB)
        INCLUDE (xxx)
    

    我的查询在两者上都有筛选器 columnA columnB 在执行计划中,优化器使用 seek predicate 在他们两个身上,但我明白了 B列 predicate 我不知道这个案子。有人能帮忙吗?非常感谢

    1 回复  |  直到 7 年前
        1
  •  3
  •   Martin Smith    7 年前

    您的查询谓词类似于

    recommend Between 179764 and 26506209 and winlostdate >= '2017-07-12'
    

    +-----------+-------------+------+----------+
    | recommend | winlostdate | Seek | Residual |
    +-----------+-------------+------+----------+
    |    179764 | 2000-01-01  |      |          |
    |    179764 | 2017-07-12  | Y    | Y        |
    |    179765 | 2000-01-01  | Y    | N        |
    |    179765 | 2017-07-12  | Y    | Y        |
    |  26506209 | 2000-01-01  | Y    | N        |
    |  26506209 | 2017-07-12  | Y    | Y        |
    |  26506210 | 2000-01-01  |      |          |
    +-----------+-------------+------+----------+
    

    (recommend, winlostdate) >= (179764, '2017-07-12') recommend <= 26506209 这不是真的。

    这是上面的Seek=Y的连续范围。

    winlostdate >= '2017-07-12'