当前位置: 代码迷 >> Sql Server >> 查询效率解决方案
  详细解决方案

查询效率解决方案

热度:79   发布时间:2016-04-24 21:51:43.0
查询效率
--WHERE YongHu.ID='7D1D4691-26FD-46E3-84E0-7EC80B3DC865'
WHERE yonghu.ZGH='admin'
这两个查询条件,我用GUID查,15秒,用admin查,不到1秒。
咋回事?

------解决方案--------------------
主要原因:GUID相对比较宽,在有索引的情况下索引页会很多,b树的深度会多很多,查询的时候需要查找的页面更多,速度也就更慢。

------解决方案--------------------
不过你的列都不同,没有什么可比性,最好还是给出执行计划
------解决方案--------------------
如果一个列有索引,一个列没索引,而且有索引的那个列用到了索引(有时候会因为某种原因使得索引无效,比如在列上使用了函数等),那么快是很正常的事情。

连续3次回复已经完毕,等别人回复了我才能回复了
------解决方案--------------------
贴出执行计划吧,不然只理论上说。解决不了你的问题。
------解决方案--------------------
很正常,存在的就是合理的。
------解决方案--------------------
信息量太少,估计是没有索引的关系
------解决方案--------------------
你数据表列类型是Guid,而你比较的参数是varchar(),有可能是因为存在隐式转换导致了全表扫描。
楼主可以看看查询计划是不是存在隐式转换、表扫描;

------解决方案--------------------
贴出执行计划,
或打开set statistics io on 
go
set statistics time on 
go
set showplan_text on 
go
再执行语句,观察cost或最佳路径的选准与否。
走了索引还是全表扫描还是索引扫描不同的路径不同的结果的。
------解决方案--------------------
引用:
--WHERE YongHu.ID='7D1D4691-26FD-46E3-84E0-7EC80B3DC865'
WHERE yonghu.ZGH='admin'
这两个查询条件,我用GUID查,15秒,用admin查,不到1秒。
咋回事?

这个还是看一下执行计划吧,是不是一个存在索引而另外一个不存在呢?
  相关解决方案