我正在优化针对遗留系统中非常宽的表的 SQL 查询。由于各种原因,我目前无法缩小表格范围。
我的查询运行缓慢,因为它对我创建的索引执行索引查找,然后使用书签查找来查找它需要的索引中不存在的其他列。书签查找占用了 42% 的查询时间(根据查询优化器)。
该表有 38 列,其中一些是 nvarchars,因此我无法创建包含所有列的覆盖索引。我试图通过创建覆盖所有列的索引来利用索引交集,但是那些“覆盖”索引没有被执行计划拾取并且没有被使用。
此外,由于通过此查询提取了 38 列中的 28 列,因此我将表中的 28/38 列存储在这些覆盖索引中,所以我不确定这有多大帮助。
您是否认为书签查找与它所获得的一样好,或者另一种选择是什么?
(我应该指定这是 SQL Server 2000)