深入理解Sqlserver索引

1. Sqlserver中索引分为聚集索引和非聚集索引:

聚集索引:表中数据的物理存储的顺序与索引顺序完全相同(字典的按拼音查法),检索效率比非聚集索引高,但对数据更新影响较大

非聚集索引:表中数据的存储和索引存储在不同的位置,索引带有指针指向数据的存储位置(字典的按偏旁部首查法),非聚集索引检索效率比聚集索引低,但对数据更新影响较小

2. 索引的建立原则:

  A.每个表中只可以创建一个聚集索引(数据库一次只能按一个规则进行排序)但最多可以创建多个非聚集索引;

  B.系统一般会给主键字段自动建立聚集索引;

  C.有大量重复值且经常有范围查询和排序、分组的列,或者经常频繁访问的列,或者返回大量数据记录时考虑建立聚集索引;

  D.有大量非重复值或者精确匹配的查询的搜索条件(where)中经常使用的列或者返回少量数据记录时考虑建立非聚集索引;

  E.在一个经常做插入操作的表中建立索引,应使用fillfactor(填充因子)来减少页分裂,同时提高并发度并降低死锁的发生。如果该表为只读表,填充因子可设为100.

  F.在选择索引键时,尽可能采用小数据类型的列作为键以使每个索引页能容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必需遍历的索引页面降低到最小,此外,尽可能的使用整数做为键值,因为整数的访问速度最快。

  G.不要索引大型字段和小型表;

3. 索引的创建语句:

USE [CMC]
GOIF EXISTS (SELECT * FROM SYSINDEXES WHERE NAME='IX_CMC_INDEX_NAME')
BEGINDROP INDEX [dbo].[Products].IX_CMC_INDEX_NAME
ENDCREATE 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
View Code

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)
View Code

结果预览:

转载于:https://www.cnblogs.com/sccd/p/5573817.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二维码工具

二维码生成: https://cli.im/ 二维码解析 :https://www.sojson.com/qr/deqr.html

前端学习(1972)vue之电商管理系统电商系统之弹出修改对话框

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

PHP漏洞全解(二)-命令注入攻击

命令注入攻击 PHP中可以使用下列5个函数来执行外部的应用程序或函数 system、exec、passthru、shell_exec、(与shell_exec功能相同) 函数原型 string system(string command, int &return_var) command 要执行的命令 return_var 存放执行命令的执行后的状态值 string exec…

前端学习(1973)vue之电商管理系统电商系统之完成修改的操作

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

Java遍历Map的4种方式

public static void main(String[] args) {// 循环遍历Map的4中方法Map<Integer, Integer> map new HashMap<Integer, Integer>();map.put(1, 2);// 1. entrySet遍历&#xff0c;在键和值都需要时使用&#xff08;最常用&#xff09;for (Map.Entry<Integer, I…

C#处理JSON 数据

网络中数据传输经常是xml或者json&#xff0c;现在做的一个项目之前调其他系统接口都是返回的xml格式&#xff0c;刚刚遇到一个返回json格式数据的接口&#xff0c;通过例子由易到难总结一下处理过程&#xff0c;希望能帮到和我一样开始不会的朋友。一、C#处理简单json数据json…

windows node.js安装以及启动过程

npm install -g cnpm --registryhttps://registry.npm.taobao.org cnpm install node-sass cnpm install 启动 cnpm run dev

JS中的this好神奇,都把我弄晕了

一、this的常见判断&#xff1a; 1.函数预编译过程 this —> window 2.全局作用域里 this —> window 3.call/apply 可以改变函数运行时this指向 4.obj.func(); func()里面的this指向obj&#xff08;即谁调用该函数&#xff0c;函数内this就指向谁&#xff09; 二、thi…

前端学习(1974)vue之电商管理系统电商系统之完成删除的操作

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

nginx.conf文件内容详解

######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组 user www www;#nginx进程数&#xff0c;建议设置为等于CPU总核心数。 worker_processes 8;#全局错误日志定义类型&#xff0c;[ debug | info | notice | warn | error | crit ] error_log /usr/local…

Java文件读写操作指定编码方式防乱码

读文件&#xff1a;BufferedReader 从字符输入流中读取文本&#xff0c;缓冲各个字符&#xff0c;从而提供字符、数组和行的高效读取。 可以指定缓冲区的大小&#xff0c;或者可使用默认的大小。大多数情况下&#xff0c;默认值就足够大了。 通常&#xff0c;Reader 所作的每个…

前端学习(1975)vue之电商管理系统电商系统之渲染参数下的可选项

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

java递归树方法

Overridepublic List<MenuTreeList> menuTreeList() {// 查出没有父级角色信息List<MenuTreeList> parentRoleList sysMenuMapper.getParentRoleList("0");// 获取子级角色信息parentRoleList treeMenuList(parentRoleList);// 使用递归方法获取return…

2016.6.17——Remove Duplicates from Sorted Array

Remove Duplicates from Sorted Array 本题收获&#xff1a; 1.“删除”数组中元素 2.数组输出 题目&#xff1a; Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space fo…

前端学习(1976)vue之电商管理系统电商系统之解决attr_val为空

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

Git 版本管理工具命令速查

转自&#xff1a;http://www.jb51.net/article/55442.htm 一、 Git 常用命令速查 git branch 查看本地所有分支git status 查看当前状态 git commit 提交 git branch -a 查看所有的分支git branch -r 查看远程所有分支git commit -am "init" 提交并且加注释 git remo…

前端学习(1979)vue之电商管理系统电商系统之让文本框获得焦点

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…

java 递归20210408-3

private void insertCityInfo() {JSONArray jsonArray GetCityCodeHttpUtil.getDistrictData1(COUNTRY);List<Map<?, ?>> list this.convertJsonToMap(jsonArray, new ArrayList<Map<?, ?>>());for (Map<?, ?> map : list) {try {this.i…

关于多线程之GCD的一些学习要点

GCD是当前多线程使用最方便的&#xff0c;也是使用比较多的。 学习GCD主要集中在一下几点&#xff1a; 一、队列&#xff0c;同步&#xff0c;异步 1.主队列&#xff1a;dispatch_get_main_queue(); 2.串行队列&#xff1a;dispatch_queue_create("queue", 0); 3.并行…

前端学习(1980)vue之电商管理系统电商系统之实现文本框和按钮的切换

目录结构 router.js import Vue from vue import Router from vue-router import Login from ./components/Login.vue import Home from ./components/Home.vue import Welcome from ./components/Welcome.vue import Users from ./components/user/Users.vue import Right fr…