关于索引扫描的问题?
我在A表在建立了一个主键(列名为AGuid,Guid类型)和一个聚集索引(列名为CreateTime,DateTime类型)
B表为A表的外表,在列AGuid上建了一个索引(非聚集索引)
执行以下语句
Select * form a inner join b on a.AGuid=b.AGuid
为什么执行计划中,对A表采用聚集索引扫描?如果去掉聚集索引就成了表扫描了
为什么用不上AGuid上的索引呢
谢谢
[解决办法]
所以楼主的语句, 理论上似乎是走 GUID 上的索引更有效.
但涉及到实际数据时, 就还要结合数据进行分析
在优化中, 基本上是要结合: 表结构(包括索引), 数据, 查询语句, 这三者来进行查询计划分析的, 缺一不可.
这也是为什么大家很少会看到使用OPTION和WITH提示, 因为这些提示往往限制让查询使用一种较为固定的方法, 如果数据经常变化, 这种做法往往导致大部分情况下查询性能并不好.