SQL聚集索引与非聚集索引总结2
来源:互联网 发布:淘宝号安全风险 编辑:程序博客网 时间:2024/06/07 02:49
下面简单说一些暂时想到的对使用索引影响较大的几个注意点
页是SQL Server存储数据的基本单位,大小为8KB。
请一定要记住,页是SQL Server进行数据读写的最小I/O单位,而不是行。SQL Server中一个页大小为8KB,每8个页形成一个区,每页8KB,其中页头占用96个字节,页尾的行指示器占用2个字节,还有几个保留字节,也就是一个页8192个字节,能用了存储数据的实际约8000个字节,8000个字节一般可以存储很多行数据。即便SQL Server只访问一行数据,它也要把整个页加载到缓存并从缓存读取数据,我们通常所说的开销主要就是I/O开销,这点不少人都没有清醒的认知。
认识窄索引
很多书籍和文章都写过索引要使用窄索引,窄索引是个什么东东呢,大白话就是把索引建在字节长度比较小的列上,比如int占用4个字节,bigint占用8个字节,char(20)占用20个字节nchar(20)最占用40个字节,那么int 相对于bigint来说就是窄了(占用字节数更少),bigint比char(20)也要窄,char(20)和nchar(20)相比要窄(nchar(20)每个字符占用2个字节)。
明白了啥是窄索引我们来说下为什么要使用窄索引,我们知道数据存储和读取的最小单位是页,一个页8K大小,当使用比较窄的列做索引列时,每个页能存储的数据就更多,以int和bigint为例,一个8K的页大约能存储8*1024/4(int 4个字节)=2048(实际值要比这个数字小)条数据,使用bigint大约能存储8*1024/8(bigint为8个字节)=1024(实际值要比这个数字小)条数据,也就是说索引列的长度也小,每个页能存储的数据也就越多,反过来说就是存储索引所需要的页数也就越少,页数少了进行索引查找时需要检索的页自然也就少了,检索页数少了IO开销也就随之减少,查询效率自然也就高了。
摘抄自懒惰的肥兔,版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接:http://www.cnblogs.com/lzrabbit/archive/2012/06/11/2517963.html
- SQL聚集索引与非聚集索引总结2
- 聚集索引与非聚集索引 - SQL
- 聚集与非聚集索引
- 聚集与非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引
- SQL Server 索引基础知识(2)----聚集索引,非聚集索引 索引基础知识(2)----聚集索引,非聚集索引
- SQL建立一个聚集索引与非聚集索引
- SQL server聚集索引与非聚集索引
- SQL SERVE的聚集索引与非聚集索引
- SQL聚集索引和非聚集索引
- SQL聚集索引和非聚集索引
- SQL Server 聚集索引/非聚集索引
- SQL Server 聚集索引/非聚集索引
- SQL 聚集索引和非聚集索引
- gtk+3.0的环境配置及基于gtk+3.0的python简单例子
- ios颜色渐变
- 从程序员的角度来看为什么我们需要工作流
- 对java封装特性的一些浅薄认识
- 用wkhtmltopdf生成highcharts图表不美观,需要设置相应参数
- SQL聚集索引与非聚集索引总结2
- 今日作息及食谱(6.25)
- Linux命令自己写 — ls
- LeetCode 66 Valid Number
- Codeforces 10C Digital Root 规律题
- 单向链表反转(java)
- Spring@Autowired注解与自动装配
- C++编程学习之LeetCode OJ
- 关于C++中创建匿名类的时的情况