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 就好了

 

 

 

 

 

posted @ 2021-01-06 11:34  写代码的华  阅读(935)  评论(0)    收藏  举报