码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2017-01-17 21:24:58      阅读:288      评论:0      收藏:0      [点我收藏+]

标签:post   操作   created   count   href   存储空间   顺序   搜索   建立   

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

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避免全表扫描

标签:post   操作   created   count   href   存储空间   顺序   搜索   建立   

原文地址:http://www.cnblogs.com/lykbk/p/aedereeraefewr2343243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!