SQLServer2016 之后增加了索引列数的限制 从 16个列 增加到了 32个列
创建带有包含列的索引
https://docs.microsoft.com/zh-cn/sql/relational-databases/indexes/create-indexes-with-included-columns?view=sql-server-2017
适用于:
SQL Server
Azure SQL 数据库
Azure SQL 数据仓库
并行数据仓库
本主题说明如何通过使用 SQL Server 或 SQL Server Management Studio ,添加包含列(或非键列)以便在 Transact-SQL中扩展非聚集索引的功能。 通过包含非键列,可以创建覆盖更多查询的非聚集索引。 这是因为非键列具有下列优点:
它们可以是不允许作为索引键列的数据类型。
在计算索引键列数或索引键大小时, 数据库引擎 不考虑它们。
当查询中的所有列都作为键列或非键列包含在索引中时,带有包含性非键列的索引可以显著提高查询性能。 这样可以实现性能提升,因为查询优化器可以在索引中找到所有列值;不访问表或聚集索引数据,从而减少磁盘 I/O 操作。
备注
当索引包含查询引用的所有列时,它通常称为“覆盖查询”。
开始之前
设计建议
重新设计索引键大小较大的非聚集索引,以便只有用于搜索和查找的列为键列。 使覆盖查询的所有其他列成为非键列。 这样,将具有覆盖查询所需的所有列,但索引键本身较小,而且效率高。
将非键列包含在非聚集索引中,以避免超过当前索引大小的限制(最大键列数为 32,最大索引键大小为 1,700 字节,而在 SQL Server 2016 (13.x) 以前,最大键列数为 16,最大索引键大小为 900 字节)。 数据库引擎 计算索引键列数或索引键大小时,不考虑非键列。
限制和局限
只能对非聚集索引定义非键列。
除了 text、 ntext和 image 之外的所有数据类型都可以用作非键列。
精确或不精确的确定性计算列都可以是非键列。 有关详细信息,请参阅 计算列上的索引。
只要允许将计算列数据类型作为非键索引列,从 image、 ntext和 text 数据类型派生的计算列就可以作为非键索引列。
除非先删除某一表的索引,否则无法从该表中删除非键列。
除进行下列更改外,不能对非键列进行其他更改:
将列的为空性从 NOT NULL 改为 NULL。
增加 varchar、 nvarchar或 varbinary 列的长度。
安全性
Permissions
要求对表或视图具有 ALTER 权限。 用户必须是 sysadmin 固定服务器角色的成员,或者是 db_ddladmin 和 db_owner 固定数据库角色的成员。
使用 SQL Server Management Studio
创建带有非键列的索引
在对象资源管理器中,单击加号以便展开包含您要创建带有非键列的索引的表的数据库。
单击加号以便展开 “表” 文件夹。
单击加号以便展开您要创建带有非键列的索引的表。
右键单击“索引”文件夹,指向“新建索引”,然后选择“非群集索引…”。
在 “新建索引” 对话框的 “常规” 页中,在 “索引名称” 框中输入新索引的名称。
在“索引键列”选项卡下,单击“添加…”。
在“从 table_name 中选择列”对话框中,选中要添加到索引的一个或多个表列的复选框。
单击“确定” 。
在“包含性列”选项卡下,单击“添加…”。
在“从 table_name 中选择列”对话框中,选中要作为非键列添加到索引的一个或多个表列的复选框。
单击“确定” 。
在 “新建索引” 对话框中,单击 “确定”。
使用 Transact-SQL
创建带有非键列的索引
在 “对象资源管理器” 中,连接到 数据库引擎的实例。
在标准菜单栏上,单击 “新建查询”。
将以下示例复制并粘贴到查询窗口中,然后单击“执行” 。
SQL复制USE AdventureWorks2012;
GO
-- Creates a nonclustered index on the Person.Address table with four included (nonkey) columns.
-- index key column is PostalCode and the nonkey columns are
-- AddressLine1, AddressLine2, City, and StateProvinceID.
CREATE NONCLUSTERED INDEX IX_Address_PostalCode
ON Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
GO
SQLServer2016 之后增加了索引列数的限制 从 16个列 增加到了 32个列的更多相关文章
- Java获得数据库查询结果的列数和行数,打印查询结果
Java连接数据库及简单操作见我以前的一篇随笔:http://www.cnblogs.com/meitian/p/5036332.html 一.获取查询结果的行数和列数 查询结果为ResultSe ...
- StringGrid 实例2:1、获取 StringGrid 的行数、列数; 2、给单元赋值.
实例2: 本例功能: 1.获取 StringGrid 的行数.列数; 2.给单元赋值. 运行效果图:
- DataSet 取值,DataSet行数,DataSet列数 从DataSet中取出特定值
1 DataSet.Table[0].Rows[ i ][ j ] 其中i 代表第 i 行数, j 代表第 j 列数 2 DataSet.Table[0].Rows[ i ].ItemArray[ j ...
- Android中动态设置GridView的列数、列宽和行高
在使用GridView时我们知道,列数是可以通过设计时的属性来设置的,列的宽度则是根据列数和GridView的宽度计算出来的.但是有些时候我们想实现列数是动态改变的效果,即列的宽度保持某个值,列的数量 ...
- 学习笔记13—python DataFrame获取行数、列数、索引及第几行第几列的值
1. df=DataFrame([{‘A’:’11’,’B’:’12’},{‘A’:’111’,’B’:’121’},{‘A’:’1111’,’B’:’1211’}]) print df.column ...
- python DataFrame获取行数、列数、索引及第几行第几列的值
print df.columns.size#列数 2 print df.iloc[:,0].size#行数 3 print df.ix[[0]].index.values[0]#索引值 0 print ...
- android手机旋转屏幕时让GridView的列数与列宽度自适应
无意中打开了一年前做过的一个android应用的代码,看到里面实现的一个小功能点(如题),现写篇文章做个笔记.当时面临的问题是,在旋转屏幕的时候需要让gridview的列数与宽度能自适应屏幕宽度,每个 ...
- POI获取Excel列数和行数的方法
//获取指定行,索引从0开始 hssfRow=hssfSheet.getRow(1); //获取指定列,索引从0开始 hssfCell=hssfRow.getCell((short)6);//获取总行 ...
- JAVA使用POI获取Excel的列数与行数
Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能. 下面这篇文章给大家介 ...
随机推荐
- Optimizing Hive queries for ORC formatted tables
Short Description: Hive configuration settings to optimize your HiveQL when querying ORC formatted t ...
- (转)Spring Boot (十四): Spring Boot 整合 Shiro-登录认证和权限管理
http://www.ityouknow.com/springboot/2017/06/26/spring-boot-shiro.html 这篇文章我们来学习如何使用 Spring Boot 集成 A ...
- BSOJ 4062 -- 【清华集训2012】串珠子
Description 铭铭有n个十分漂亮的珠子和若干根颜色不同的绳子.现在铭铭想用绳子把所有的珠子连接成一个整体. 现在已知所有珠子互不相同,用整数1到n编号.对于第i个珠子和第j个珠子,可以选择不 ...
- Linux CenterOS安装mysql-5.6.12-linux-glibc2.5-x86_64.tar.gz步骤
1.首先配置IP. Cd /etc/sysconfig/network-scripts/ vim ifcfg-ens32 将ONBOOT=no,改为ONBOOT=yes.(开机启动激活网卡) 2.构建 ...
- Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?
只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...
- Python:Day41 http、css
HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. 2.请求协议 请求协议的格式如下: 请求首行: // ...
- 【js】鼠标跟随效果
1.实现思想 ①鼠标跟随效果,发生在鼠标移动的时候,故需要使用onmousemove事件 ②当页面内容多于1屏时,就需要考虑滚动距离的问题 ③想实现鼠标跟随的效果需要: 元素的left位置 = 鼠标当 ...
- (2)esp8266多国语言翻译系统
http://bbs.mydigit.cn/simple/?t2649513.html 这个想法不错 原来只是想用esp8266搞一个百度的多国语言翻译系统出来的,只是为了尝试如何调用各种web ap ...
- SWIG 的应用(一)
用 C/C++ 扩展 Python. - 如果仅使用标准 C 库函数,则可以使用 Python 自带的 ctypes 模块,或者使用 cffi. - 如果要使用自定义 C/C++ 函数,又不怕写 wr ...
- 箱线图boxplot
箱线图boxplot--展示数据的分布 图表作用: 1.反映一组数据的分布特征,如:分布是否对称,是否存在离群点 2.对多组数据的分布特征进行比较 3.如果只有一个定量变量,很少用箱线图去看数据的分布 ...