0
考虑以下几点:指标的where子句和连接子句
- 表1用下列:A,B,米
- 表2用下列:A,B,X,Y
这是我的查询:
select t2.a, t2.b, t1.m
from table2 t2
join table1 t1 on t1.a = t2.a
and t2.b = t2.b
where t2.x = 'some value'
and t2.y = 'some other value'
我必须优化此查询。
我有以下非群集索引:
- 对表1的索引,其列a和b对表2的
- 索引,其列于表2一 和b
- 指数,用柱x和y
我会受益于table2上的另一个索引,它将涵盖此查询中使用的所有列:a,b,x和y?
我认为,你可以考虑到包括在'table1'索引中的列'M'(作为包含列) – Lamak
@拉马克,是的,我明白了。我的实际查询比简单的例子更复杂。我对表2中的指数更感兴趣。这两个“现有”指数是否足够,还是应该创建一个全部4列的额外指标? –
当提出查询计划时,优化器将只为每个表使用一个索引。你想确保这个索引是有用的。这可能取决于哪个表将被扫描,哪些将被索引键入,这可以取决于每个表的大小。您可能需要四处游览并查看正在使用哪个索引。如果不需要其他列(因此数据页不需要解除引用),可以将索引添加到索引中,这有助于使其成为“覆盖查询”,对IO有帮助。 –