首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多索引与多列索引?

多索引与多列索引?

提问于 2017-12-19 02:55:38
回答 2关注 0查看 387

我刚刚在SQL Server 2005中的表中添加一个索引,它让我思考。创建1个索引和定义多个列,每个列中有1个索引需要索引的区别是什么?

是否有某些理由为什么应该使用另一个?

例如

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
Create NonClustered Index IX_IndexName On TableName
代码语言:txt
AI代码解释
复制
(Column1 Asc, Column2 Asc, Column3 Asc)

代码语言:txt
AI代码解释
复制
Create NonClustered Index IX_IndexName1 On TableName
代码语言:txt
AI代码解释
复制
(Column1 Asc)
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
Create NonClustered Index IX_IndexName2 On TableName
代码语言:txt
AI代码解释
复制
(Column2 Asc)
代码语言:txt
复制
代码语言:txt
AI代码解释
复制
Create NonClustered Index IX_IndexName3 On TableName
代码语言:txt
AI代码解释
复制
(Column3 Asc)

回答 2

最爱开车啦

发布于 2017-12-19 03:16:04

多列索引可用于引用所有列的查询:

代码语言:txt
复制
代码语言:txt
AI代码解释
复制
SELECT *
代码语言:txt
AI代码解释
复制
FROM TableName
代码语言:txt
AI代码解释
复制
WHERE Column1=1 AND Column2=2 AND Column3=3

这可以直接使用多列索引来查找。另一方面,至多可以使用单列索引中的一个(它将不得不查找所有具有Column1 = 1的记录,然后检查每个列中的Column2和Column3)。

嗨喽你好

发布于 2017-12-19 03:15:51

如果一个索引是“覆盖”的,那么就不需要使用索引以外的任何东西。在SQL Server 2005中,还可以向索引添加不属于该键的其他列,这可以消除行的其余行。

具有多个索引,每个列上的每个索引可能意味着只有一个索引被使用 - 您将不得不参考执行计划来查看不同索引方案提供的效果。

你还可以使用调整向导来帮助确定哪些索引可以使给定的查询或工作负载执行最佳。

和开发者交流更多问题细节吧,去 写回答
相关文章
联合索引(多列索引)[通俗易懂]
联合索引是指对表上的多个列进行索引,联合索引也是一棵B+树,不同的是联合索引的键值数量不是1,而是大于等于2.
全栈程序员站长
2022/09/05
2.9K0
「Mysql索引原理(五)」多列索引
很多人对多列索引的理解都不够。一个常见的错误就是,为每个列创建独立的索引,或者按照错误的顺序创建多列索引。
源码之路
2020/09/04
4.5K0
「Mysql索引原理(五)」多列索引
MySQL索引中的前缀索引和多列索引
正确地创建和使用索引是实现高性能查询的基础,本文笔者介绍MySQL中的前缀索引和多列索引。
玖柒的小窝
2021/11/06
5.1K0
mysql 创建 主键索引 唯一索引 全文索引 多列索引 添加索引
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
bear_fish
2018/09/19
6.6K0
Elasticsearch多索引
 在Elasticsearch中,一般的查询都支持多索引。 只有文档API或者别名API等不支持多索引操作,因此本篇就翻译一下多索引相关的内容。 首先,先插入几条数据: $ curl -XPOST localhost:9200/test1/test/1 -d '{"name":"test1"}' $ curl -XPOST localhost:9200/test1/test/2 -d '{"name":"test1"}' $ curl -XPOST localhost:9200/test2/test/
用户1174963
2018/01/17
1.8K0
Elasticsearch多索引
ElasticSearch 空搜索与多索引多类型搜索
https://gist.github.com/clintongormley/8579281
smartsi
2019/08/07
1.3K0
MongoDB 多键索引
更多参考 MongoDB 单键(列)索引 MongoDB 复合索引 MongoDB执行计划获取(db.collection.explain())
Leshami
2018/08/13
1.7K0
MongoDB 多键索引
比较列存储索引与行索引
原因:     之前已经写过一篇关于列存储索引的简介https://cloud.tencent.com/developer/article/1032222,很粗糙但是基本阐明了列存储索引的好处。为了更好的理解列存储索引,接下来我们一起通过列存储索引与传统的行存储索引地对比2014中的列存储索引带来了哪些改善。由于已经很多介绍列存储,因此这里我仅就性能的改进进行重点说明。 测试场景     我创建了5个测试,尽量保证测试环境避免来自外界的重负载进而影响到结果。测试结果基于两个独立的表,分别是: FactTra
用户1217611
2018/01/30
1.8K0
比较列存储索引与行索引
Elasticsearch——多索引的使用
在Elasticsearch中,一般的查询都支持多索引。 只有文档API或者别名等不支持多索引操作,因此本篇就翻译一下多索引相关的内容。 首先,先插入几条数据: $ curl -XPOST localhost:9200/test1/test/1 -d '{"name":"test1"}' $ curl -XPOST localhost:9200/test1/test/2 -d '{"name":"test1"}' $ curl -XPOST localhost:9200/test2/test/1 -
用户1154259
2018/01/17
9770
列存储索引1:初识列存储索引
     2012以后提供了一种不同于传统B树结构的索引类型,就是内存列存储索引。这种索引应用了一种基于列的存储模式,也是一种新的查询执行的批处理模式,并且为特定的负载提供了巨大的性能提升。它是如何构建?如何工作?又是为什么能对性能有如此大的提升,接下来我们用简明的描述和详尽的示例来解释说明。      那么列存储索引究竟是什么?大多数时候,列存储索引被描述作为一种数据仓库和数据报表的功能。事实上,你最有可能就是在这种情况下利用这种索引。然而,即使在OLTP数据库中,你也会遇到一些要从大量数据表中获取数据的
用户1217611
2018/01/30
1.7K0
列存储索引1:初识列存储索引
Mongodb多键索引之数组
最近有项目需求用到多键索引,Mongodb中字段值支持多键索引主要包括嵌套文档、数组以及数组嵌套文档.例如联系包括手机、固定电话、邮箱、微信、QQ等,对于字段值存储类型不一样,决定创建多键索引也不一样同时性能也存在差异,例如数组值(包括数组以及数组文档),创建多键索引时会为数组中每个元素都创建索引键,如数组中元素特别多,相应索引也会特别大,创建多键索引或者组合索引时最多只支持一个数组值.
徐靖
2020/08/18
1.9K0
Mongodb多键索引之嵌套文档
接上上一篇文档 Mongodb多键索引之数组,本次继续多键索引,到目前为止还没有分析业务中具体使用方式以及需求,只知道需要使用多键索引来满足不同查询,通过一个多键索引来解决不同谓词过滤,具体能否实现以及到底使用数组、嵌套文档还是数组文档方式?目前都是未知数,所以通过学习官方资料以及实际验证来解决如上2个问题.【能不能以及怎么做问题】,同时引出关键问题性能问题,选择一个能做方式满足业务需求,到底性能如何?
徐靖
2020/08/25
3.1K0
Mongodb多键索引之数组文档
接上2篇文档关于多键索引内容,接着学习数组文档,主要实验来验证如何进行高效数据查询,通过对比方式来验证3种多键索引优缺点以及适合场景,具体链接如下:
徐靖
2020/08/25
3.4K0
CSS——多列
多列属性可以将文本设计成像报纸杂志那种多列排版的布局,类似于Microsoft Word中的段落分栏功能。
Html5知典
2019/11/26
1.5K0
MongoDB 单键(列)索引
MongoDB支持基于集合文档上任意列创建索引。缺省情况下,所有的文档的_id列上都存在一个索引。基于业务的需要,可以基于一些重要的查询和操作来创建一些额外的索引。这些索引可以是单列,也可是多列(复合索引),多键索引,地理空间索引,文本索引以及哈希索引等。 本文主要描述在基于文档上的单列来创建索引。 一、创建语法 语法:db.collection.createIndex(keys, options) keys: 一个包含字段和值键值对的文档,指定该键即在该键上
Leshami
2018/08/13
1.1K0
MongoDB 单键(列)索引
函数使得索引列失效
      在索引列上使用函数使得索引失效的是常见的索引失效原因之一,因此尽可能的避免在索引列上使用函数。尽管可以使用基于函数的索引来 解决索引失效的问题,但如此一来带来的比如磁盘空间的占用以及列上过多的索引导致DML性能的下降。本文描述的是一个索引列上使用函数使 其失效的案例。
Leshami
2018/08/14
1K0
SQL Server 索引和表体系结构(包含列索引)
包含列索引 概述 包含列索引也是非聚集索引,索引结构跟聚集索引结构是一样,有一点不同的地方就是包含列索引的非键列只存储在叶子节点;包含列索引的列分为键列和非键列,所谓的非键列就是INCLUDE中包含的列,至少需要有一个键列,且键列和非键列不允许重复,非键列最多允许1023列(也就是表的最多列-1),由于索引键列(不包括非键)必须遵守现有索引大小的限制(最大键列数为 16,总索引键大小为 900 字节)的要求所以引进了包含列索引。 正文 创建包含列索引 ----创建表 CREATE TABLE [dbo].
逸鹏
2018/04/11
1.6K0
mysql快速给列加索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引) mysql>ALTER TABLE `table_name` ADD UNIQUE ( `column` ) 3.添加INDEX(普通索引) mysql>ALTER TABLE `table_name` ADD INDEX index_name ( `column` ) 4.添加FULLTEXT(全文索引)
用户1220053
2018/02/09
3.3K0
函数索引构成虚拟隐藏列
《enq: TM - contention锁争用的解决》中提到了SYS_NC00004$,理解不是很明白,于是在OTN上发了帖子咨询了下,
bisal
2019/08/18
1K0
excel 多列内容拼接
例如想要拼接  A2 和 B2 的内容生成一个新列,A2 内容为 320,B2 内容为 480,我们生成新列,需要拼接两列内容,中间同时拼接 * ,新列公式如下:
蓓蕾心晴
2022/10/27
1.7K0

相似问题

2020-12-06:mysql中,多个索引会有多份数据吗?

0156

Excel多列拆成行?

3170

关于SQL多列排序?

2385

pandas 如何根据多列数据生成新列?

01.2K

直播多码率、多协议支持情况?

2816
相关问答用户
某公司 | 程序员擅长1个领域
腾讯云TDP | 先锋会员擅长2个领域
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档