sqlserver 判断是否走索引 left join导致select count() from ...慢
前言
昨天发现仓库的出入库记录表查询很慢,用profiler拿到sql直接运行没有问题。于是断点分析,发现在执行查询count这一步很慢。拿到这一步执行的sql,果然是慢了。分析中发现联表键没有建索引,建了索引后,没有改观。查询文章博客后发现,是使用了left join 的缘故。
实践发现,left join 不走索引(??有点怀疑,盼大佬解惑)。
判断是否走索引
use GanMeiDb8004 --要查看的数据库
select distinct db_name(database_id) as N'数据库名称',
object_name(a.object_id) as N'表名',
b.name N'索引名称',
user_seeks N'用户索引查找次数',
user_scans N'用户索引扫描次数',
last_user_seek N'最后查找时间',
last_user_scan N'最后扫描时间',
rows as N'表中的行数'
from sys.dm_db_index_usage_stats a join
sys.indexes b
on a.index_id = b.index_id
and a.object_id = b.object_id
join sysindexes c
on c.id = b.object_id
where database_id=db_id('GanMeiDb8004') ---改成要查看的数据库
and object_name(a.object_id) not like 'sys%' AND object_name(a.object_id) = 'StockStatusChangeLog'
order by user_seeks,user_scans,object_name(a.object_id)
效果

left join导致select count() from ...慢,不走索引,改为inner join 就好了


浙公网安备 33010602011771号