sqlserver查看创建的索引(浅述SQL Server的聚焦强制索引查询条件和Columnstore Index)
sqlserver查看创建的索引
浅述SQL Server的聚焦强制索引查询条件和Columnstore Index前言
本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解。
强制索引查询条件
前面我们也讲了一点强制索引查询的知识,本节我们再来完整的讲述下
(1)SQL Server使用默认索引
USE TSQL2012 GO SELECT * FROM Sales.Orders
上述就不用我再啰嗦了,使用默认主键创建的聚集索引来执行查询执行计划。
(2)SQL Server使用强制索引
USE TSQL2012 GO SELECT custid FROM Sales.Orders WITH(INDEX(idx_nc_custid))
(3)SQL Server使用内联查询条件
USE TSQL2012 GO SELECT custid FROM Sales.Orders WITH (INDEX(idx_nc_custid)) INNER JOIN Sales.OrderDetails WITH (INDEX(PK_OrderDetails)) ON Sales.OrderDetails.orderid = Sales.Orders.orderid GO
(4)SQL Server使用OPTION
上述我们第三个使用内联查询是比较好的,同时我们可以在表连接中末尾使用OPTION来强制使用索引,因为涉及到表连接,我们会用到另外一个函数Hints。该Hints用在Join Hints、Query Hints、Table Hints。如果我们指定用Hints很明显将覆盖查询计划,因为将SQL Server默认在查询上会使用最优查询,此时通过Hints将可能会覆盖最优查询,所以一般不推荐使用,只对于明确知道这样做会比默认查询计划会更好的有丰富经验的SQL Server使用者可能会是好的解决方案。但是对于OPTION我们可以使用,OPTION才SQL Server 2008+上才有,上述第三个强制使用内联查询提示可以通过OPTION结合Hints来完成。
USE TSQL2012 GO SELECT custid FROM Sales.Orders AS SO INNER JOIN Sales.OrderDetails AS SOD ON SOD.orderid = SO.orderid OPTION (TABLE HINT(SO,INDEX(idx_nc_custid)),TABLE HINT(SOD, INDEX(PK_OrderDetails))) GO
上述不推荐使用,除非你明确这样做比默认使用最优执行查询计划更好。
Columnstore Index
列存储索引出现在SQL Server 2012+上,我们本节简单说说这个内容,对于大数据方面合理使用列存储索引能够提高查询性能,但是通过查找大量资料发现在SQL Server 2012中使用列存储索引有诸多限制并且还会出现许多问题,而在SQL Server 2014+上这样的问题得到了很大的改善,所以不建议在SQL Server 2012中使用列存储索引,要使用可以在 SQL Server 2014+上使用。
当我们在SQL Server 2012中创建索引会提示有Columnstore Index和NONCLUSTERED COLUMNSTORE INDEX。在数据库中存储数据分为两种,一种是行存储,另外一种则是列存储,行存储是在页上存储所有行数据,而列存储则是在相同页上存储一列所有数据,所以利用列存储查找数据会更加快而不是查找整行上的所有数据,当然这也就意味着查找速度的增加而导致的则是硬件驱动配置需要有更高的要求,列存储中的索引会进行压缩,所以要使用列存储需要更大的内存。列存储索引存储每一列数据在每一组单独的磁盘页中,而不是在每页上存储多行,它和行存储存储数据区别在于如下图
这里关于例子就不再给出,算是做一个基本了解吧。
总结
本节我们主要讲了强制使用索引条件来进行查询,当对于使用默认创建索引进行查询计划时觉得不是最优解,可以尝试使用强制索引来进行对比找出更好得解决方案。简短的内容,深入的理解,我们下节再会。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,同时也希望多多支持开心学习网!
- mysql整体架构设计(MySQL 整体架构介绍)
- sql server2008如何升级到2012(MS sqlserver 2008数据库转换成2000版本的方法)
- 用mysql语句写python学生管理系统(Python基于mysql实现学生管理系统)
- sql server优化性能(SQLServer地址搜索性能优化)
- mysql必知必会索引(MySQL索引知识的一些小妙招总结)
- mysql锁技术(MySQL 加锁控制并发的方法)
- sql表更新关联语句(SQL update 多表关联更新的实现代码)
- mysql中基本语句(MySQL中explain语句的基本使用教程)
- mysql8.0.19.0正确安装图解(MySQL 8.0.23 主要更新一览新特征解读)
- sql server 进阶教程(SQL Server游标的介绍与使用)
- mysql拆分字符串(MySQL 字符串拆分操作含分隔符的字符串截取)
- sqlserver数字格式化五位小数(详细分析sqlserver中的小数类型float和decimal)
- mysql有哪些约束(MySQL完整性约束的定义与实例教程)
- sql server2008自动备份数据(SQL Server数据库定时自动备份)
- sql语句的groupby是做什么的(深入浅析SQL中的group by 和 having 用法)
- mysql用户授权的步骤(mysql创建用户并赋予用户权限详细操作教程)
- 大果肉搭配薄瓜皮, 绿宝 脆甜爽口,不愧是甜瓜中的 佼佼者(大果肉搭配薄瓜皮)
- 河南尉氏县因地制宜发展果蔬种植 水坡镇绿宝甜瓜变 金瓜(河南尉氏县因地制宜发展果蔬种植)
- 谢广坤,你这么欺负谢腾飞,良心不会痛吗(你这么欺负谢腾飞)
- 乡村爱情15 宋晓峰怀疑自己孩子,腾飞与姜奶奶亲子鉴定出结果(宋晓峰怀疑自己孩子)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
热门推荐
- dede栏目下有内容却不显示(dedecms列表不显示第一个元素如分隔符的简单方法)
- css3经典动画效果(CSS3 3D位移translate效果实例介绍)
- 云服务器自建服务器成本比较(云服务器与服务器租用之间的区别在哪里?)
- html5自定义结构指令(浅析HTML5 meta viewport参数)
- 简述css在html页面中的使用方法(10分钟理解CSS BFC原理及其应用)
- pytorch入门与实战(详解PyTorch基本操作)
- docker镜像查看分层(Docker 镜像优化从1.16GB到22.4MB)
- harborjob设置(harbor修改配置文件后重启操作)
- dedecms 目录生成(dedecms实现自动打包文章中图片并下载的方法)
- html5的canvas图形绘制技术(导出HTML5 Canvas图片并上传服务器功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9