SQL 数据优化索引建suo避免全表扫描

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 数据优化索引建suo避免全表扫描相关的知识,希望对你有一定的参考价值。

  首先什么是全表扫描和索引扫描?全表扫描所有数据过一遍才能显示数据结果,索引扫描就是索引,只需要扫描一部分数据就可以得到结果。如果数据没建立索引。 无索引的情况下搜索数据的速度和占用内存就会比用索引的检索慢和高。下面是一个例子

1:无索引的情况

  Product表,里面没有任何索引,如下图:

技术分享

 

从上图中,我悲剧的看到了,物理读是9次,也就说明走了9次硬盘,你也可以想到,走硬盘的目的是为了拿数据,逻辑读有1636次,要注意的是这里

的”次“是“页”的意思,也就是在内存中走了1636个数据页,我用dbcc ind 给你看一下,是不是有1636个表数据页。

技术分享

这里有1637个数据页的原因是第一个是IAM跟踪页。

技术分享

 

2:有聚集索引的情况

     下面我在Product表中建一个product_idx_productid的聚集索引,然后再次看看io情况,如下图:

技术分享

当你看到这个”逻辑读“为3次的时候,你是不是已经疯了。。。在多达1636个数据页中找到目标数据,只需3次。。。

以上参考   http://www.cnblogs.com/huangxincheng/category/555253.html

 

那么如何避免全表扫描 来提高SQL检索的性能?下面就有几种方法总结

以下参考 http://lzz7658823.iteye.com/
 
 
 

 











































































以上是关于SQL 数据优化索引建suo避免全表扫描的主要内容,如果未能解决你的问题,请参考以下文章

避免全表扫描的sql优化

大数据课堂0008会引起全表扫描的几种SQL 以及sql优化

优化 SQL 查询以避免全表扫描

避免全表扫描的sql优化

MySQL---sql语句优化

MySQL---sql语句优化