深入理解Sqlserver索引
1. Sqlserver中索引分为聚集索引和非聚集索引:
聚集索引:表中数据的物理存储的顺序与索引顺序完全相同(字典的按拼音查法),检索效率比非聚集索引高,但对数据更新影响较大。
非聚集索引:表中数据的存储和索引存储在不同的位置,索引带有指针指向数据的存储位置(字典的按偏旁部首查法),非聚集索引检索效率比聚集索引低,但对数据更新影响较小。
2. 索引的建立原则:
A.每个表中只可以创建一个聚集索引(数据库一次只能按一个规则进行排序)但最多可以创建多个非聚集索引;
B.系统一般会给主键字段自动建立聚集索引;
C.有大量重复值且经常有范围查询和排序、分组的列,或者经常频繁访问的列,或者返回大量数据记录时考虑建立聚集索引;
D.有大量非重复值或者精确匹配的查询的搜索条件(where)中经常使用的列或者返回少量数据记录时考虑建立非聚集索引;
E.在一个经常做插入操作的表中建立索引,应使用fillfactor(填充因子)来减少页分裂,同时提高并发度并降低死锁的发生。如果该表为只读表,填充因子可设为100.
F.在选择索引键时,尽可能采用小数据类型的列作为键以使每个索引页能容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必需遍历的索引页面降低到最小,此外,尽可能的使用整数做为键值,因为整数的访问速度最快。
G.不要索引大型字段和小型表;
3. 索引的创建语句:
USE [CMC]
GO IF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_CMC_INDEX_NAME')
BEGIN
DROP INDEX [dbo].[Products].IX_CMC_INDEX_NAME
END CREATE NONCLUSTERED INDEX IX_CMC_INDEX_NAME
ON [dbo].[Products](ID)
WITH FILLFACTOR = 100
GO --用指定的索引查询
SELECT * FROM [dbo].[Products] WITH (INDEX = IX_CMC_INDEX_NAME) WHERE ProductName = 'A'
GO
4. 深入理解(查询表中数据所在的数据页):
dbcc ind--查看数据库中数据页的的情况,--数据页默认分为表数据页和IAM数据页(索引数据页)
数据表Products:

dbcc traceon(2588)--为当前连接打开跟踪标记2588
DBCC IND (CMC,PRODUCTS,1)--DBCC IND (DB_Name,TableName,1) dbcc traceon(2588,3604)--为当前连接打开跟踪标记2588和3604
dbcc page(CMC,1,79,2)--dbcc page(CMC,IAMFID,PagePID,2)
结果预览:
深入理解Sqlserver索引的更多相关文章
- sqlserver索引小结
1.1 什么是索引? SQL索引有两种,聚集索引和非聚集索引,索引主要目的是提高了SQL Server系统的性能,加快数据的查询速度与减少系统的响应时间 下面举两个简单的例子: 图书馆的例子:一个图书 ...
- SqlServer索引的原理与应用(转载)
SqlServer索引的原理与应用 索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法. 索引是什么:数据库中的索引类 ...
- 理解MySQL——索引与优化
转自:理解MySQL——索引与优化 写在前面:索引对查询的速度有着至关重要的影响,理解索引也是进行数据库性能调优的起点.考虑如下情况,假设数据库中一个表有10^6条记录,DBMS的页面大小为4K,并存 ...
- SQLServer索引
SQLServer索引1.聚集和非聚集索引聚集索引:根据聚集索引进行排序,非聚集索引因为不根据索引键排序,所以聚集索引比非聚集索引快(一个表只有一个聚集索引)2.唯一索引和非唯一索引唯一索引时值不能重 ...
- mssql sqlserver 索引专题
摘要: 下文将详细讲述sql server 索引的相关知识,如下所示: 实验环境: sql server 2008 R2 sqlserver索引简介: mssql sqlsever 索引分类简介 ms ...
- sqlserver 索引的结构及其存储,索引内容
sqlserver 索引的结构及其存储,sql server索引内容 文章转载,原文地址: http://www.cnblogs.com/panchunting/p/SQLServer_IndexSt ...
- sqlserver 索引优化 CPU占用过高 执行分析 服务器检查
原文:sqlserver 索引优化 CPU占用过高 执行分析 服务器检查 1. 管理公司一台服务器,上面放的东西挺多的.有一天有个哥们告诉我现在程序卡的厉害.我给他说,是时候读点优化的书了.别一天到晚 ...
- 技术分享会(二):SQLSERVER索引介绍
SQLSERVER索引介绍 一.SQLSERVER索引类型? 1.聚集索引: 2.非聚集索引: 3.包含索引: 4.列存储索引: 5.无索引(堆表): 二.如何创建索引? 索引示例: 建表 creat ...
- sqlserver索引维护(重新组织生成索引)
sqlserver索引的维护 1:查看索引碎片大于百分三十以上的索引 select object_id= object_id,indexid = index_id,partitionnum = par ...
随机推荐
- 二叉搜索树的后序遍历路径(《剑指offer》面试题24)
题目:输入一个整数数组,判断该数组是不是二叉搜索树的后序遍历序列的结果,如果是,则返回true,如果不是则返回false.假设输入的数组的任意两个数字都互不相同. 分析:在后序遍历得到的序列中,最后一 ...
- 用Maonry如何实现UIScrollView
一,使用UIScrollView 与其他View 布局不同的地方在于, ScrollView的高度/宽度不固定: ScrollView的高度和宽度由其内容决定(即 Scroll View 的 cont ...
- QCom MSM MDP显示驱动一些点的简记
简要记录了Qualcom MSM8xxx MDP Framebuffer驱动中的一些点. Framebuffer设备的sysfs 330static int msm_fb_create_sysfs(s ...
- 【leetcode❤python】242. Valid Anagram
class Solution(object): def isAnagram(self, s, t): if sorted(list(s.lower()))==sorted(list ...
- git泄漏原理
之前做过git的加固 但是这东西还是没办法避免的 之前看了乌云的提交的git泄漏,但是都没有详细的原理,去了lijiejie的博客(字太难打了,大师傅别打我 哈哈) 如果一个网站存在git泄漏,git ...
- ABAP DESCRIBE语句
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- [SAP ABAP开发技术总结]ABAP读写、解析XML文件
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- 使jQuqer更高效的方法
讨论 jQuery 和 javascript 性能的文章并不罕见.然而,本文我计划总结一些速度方面的技巧和我本人的一些建议,来提升你的 jQuery 和 javascript 代码.好的代码会带来速度 ...
- cocos2d-x 3.X (二)创建动起来的精灵
[参考文章]http://www.cnblogs.com/suguoqiang/archive/2013/04/03/2997316.html 在HelloWorldScene.h中声明void ro ...
- iOS - UITableViewController
前言 NS_CLASS_AVAILABLE_IOS(2_0) @interface UITableView : UIScrollView <NSCoding> @available(iOS ...