目录
一、前言二、索引设计背景知识2.1、索引设计策略包括的任务三、常规索引设计3.1、数据库注意事项3.2、查询注意事项3.3、列注意事项3.4、索引的特征3.5、索引排序顺序设计指南总结一、前言
索引设计不佳和缺少索引是提高数据库和应用程序性能的主要障碍。 设计高效的索引对于获得良好的数据库和应用程序性能极为重要。 本索引设计指南包含关于索引体系结构的信息,以及有助于设计有效索引以满足应用程序需求的最佳做法。
【资料图】
二、索引设计背景知识
就像一本书,书本末尾有一个索引,可帮助快速查找书籍内的信息。 索引是按顺序排列的关键字列表,每个关键字旁边是一组页码,这些页码指向可在其中找到每个关键字的页面。
行存储索引也一样:它是按顺序排列的值列表,每个值都有指向这些值所在的数据页面的指针。 索引本身存储在页上,称为索引页。
索引是与表或视图关联的磁盘上或内存中结构,可以加快从表或视图中检索行的速度。 行存储索引包含由表或视图中的一列或多列生成的键。 对于行存储索引,这些键以树结构(B+ 树)存储,使数据库引擎可以快速高效地找到与键值关联的一行或多行。
行存储索引将逻辑组织的数据存储为包含行和列的表,物理上以行数据格式(称为 行存储1)存储,或以名为列 存储的列数据格式存储。
为数据库及其工作负荷选择正确的索引是一项需要在查询速度与更新所需开销之间取得平衡的复杂任务。 如果基于磁盘的行存储索引较窄,或者说索引关键字中只有很少的几列,则需要的磁盘空间和维护开销都较少。 而另一方面,宽索引可覆盖更多的查询。 您可能需要试验若干不同的设计,才能找到最有效的索引。 可以添加、修改和删除索引而不影响数据库架构或应用程序设计。 因此,应试验多个不同的索引而无需犹豫。
数据库引擎的查询优化器可在大多数情况下可靠地选择最高效的索引。 总体索引设计策略应为查询优化器提供可供选择的多个索引,并依赖查询优化器做出正确的决定。 这在多种情况下可减少分析时间并获得良好的性能。
不要总是将索引的使用等同于良好的性能,或者将良好的性能等同于索引的高效使用。 如果只要使用索引就能获得最佳性能,那查询优化器的工作就简单了。 但事实上,不正确的索引选择并不能获得最佳性能。 因此,查询优化器的任务是只在索引或索引组合能提高性能时才选择它,而在索引检索有碍性能时则避免使用它。
行存储是存储关系表数据的传统方法。 “行存储”是指基础数据存储格式为堆、B+ 树(聚集索引)或内存优化表的表。 “基于磁盘的行存储”排除了内存优化表。
2.1、索引设计策略包括的任务
了解数据库本身的特征。例如,内存优化表和索引提供无闩锁设计,尤其适用于数据库是否是频繁修改数据的联机事务处理 (OLTP) 数据库的应用场景。 或者, 列存储索引尤其适用于典型的数据仓库数据集。 列存储索引可以通过为常见数据仓库查询(如筛选、聚合、分组和星型联接查询)提供更快的性能,以转变用户的数据仓库体验。了解最常用的查询的特征。 例如,了解到最常用的查询联接两个或多个表将有助于决定要使用的最佳索引类型。了解查询中使用的列的特征。 例如,某个索引对于含有整数数据类型同时还是唯一的或非空的列是理想索引。确定哪些索引选项可在创建或维护索引时提高性能。 例如,对某个现有大型表创建聚集索引将会受益于 ONLINE 索引选项。 ONLINE 选项允许在创建索引或重新生成索引时继续对基础数据执行并发活动。确定索引的最佳存储位置。非聚集索引可以与基础表存储在同一个文件组中,也可以存储在不同的文件组中。 索引的存储位置可通过提高磁盘 I/O 性能来提高查询性能。使用动态管理视图 (DMV)(例如 sys.dm_db_missing_index_details 和 sys.dm_db_missing_index_columns)识别缺失索引时,可能会在同一个表和列上获得类似的索引变体。 检查表上的现有索引以及缺失索引建议,以防止创建重复索引。三、常规索引设计
了解数据库、查询和数据列的特征可以帮助设计出最佳索引。
3.1、数据库注意事项
设计索引时,应考虑以下数据库准则:
对表编制大量索引会影响 INSERT、UPDATE、DELETE 和 MERGE 语句的性能,因为当表中的数据更改时,所有索引都须适当调整。避免对经常更新的表进行过多的索引,并且索引应保持较窄,就是说,列要尽可能少;使用多个索引可以提高更新少而数据量大的查询的性能。 大量索引可以提高不修改数据的查询(例如 SELECT 语句)的性能,因为查询优化器有更多的索引可供选择,从而可以确定最快的访问方法。对小表进行索引可能不会产生优化效果,因为查询优化器在遍历用于搜索数据的索引时,花费的时间可能比执行简单的表扫描还长。 因此,小表的索引可能从来不用,但仍必须在表中的数据更改时进行维护。视图包含聚合、表联接或聚合和联接的组合时,视图的索引可以显著地提升性能。 若要使查询优化器使用视图,并不一定非要在查询中显式引用该视图。可以选择启用自动索引优化。查询存储有助于识别性能不佳的查询,并提供查询执行计划的历史记录,其中记录由优化器选择的索引。3.2、查询注意事项
设计索引时,应考虑以下查询准则:
为经常用于查询中的谓词和联接条件的列创建非聚集索引。 但是,应避免添加不必要的列。 添加太多索引列可能对磁盘空间和索引维护性能产生负面影响。涵盖索引可以提高查询性能,因为符合查询要求的全部数据都存在于索引本身中。 也就是说,只需要索引页,而不需要表的数据页或聚集索引来检索所需数据,因此,减少了总体磁盘 I/O。将插入或修改尽可能多的行的查询写入单个语句内,而不要使用多个查询更新相同的行。 仅使用一个语句,就可以利用优化的索引维护。评估查询类型以及如何在查询中使用列。 例如,在完全匹配查询类型中使用的列就适合用于非聚集索引或聚集索引。3.3、列注意事项
设计索引时,应考虑以下列准则:
对于聚集索引,请保持较短的索引键长度。 另外,对唯一列或非空列创建聚集索引可以使聚集索引获益。无法指定 ntext、 text、 image、 varchar(max) 、 nvarchar(max) 和 varbinary(max) 数据类型的列为索引键列。 不过, varchar(max) 、 nvarchar(max) 、 varbinary(max) 和 xml 数据类型的列可以作为非键索引列参与非聚集索引。xml 数据类型的列只能在 XML 索引中用作键列。检查列的唯一性。 在同一个列组合的唯一索引而不是非唯一索引提供了有关使索引更有用的查询优化器的附加信息。在列中检查数据分布。 通常情况下,为包含很少唯一值的列创建索引或在这样的列上执行联接将导致长时间运行的查询。考虑对具有定义完善的子集的列(例如,稀疏列、大部分值为 NULL 的列、含各类值的列以及含不同范围的值的列)使用筛选索引。 设计良好的筛选索引可以提高查询性能,降低索引维护成本和存储成本。如果索引包含多个列,则应考虑列的顺序。 WHERE 子句中使用的列应位于等于 (=) 、大于 (>) 、小于 (<) 或 BETWEEN 搜索条件或参与联接的列。 其他列应该基于其非重复级别进行排序,就是说,从最不重复的列到最重复的列。考虑对计算列进行索引。3.4、索引的特征
在确定某一索引适合某一查询之后,可以选择最适合具体情况的索引类型。 索引包含以下特性:
聚集还是非聚集唯一还是非唯一单列还是多列索引中的列是升序排序还是降序排序非聚集索引是全表还是经过筛选列存储与行存储内存优化表的哈希索引与非聚集索引也可以通过SQL Server的设置选项自定义索引的初始存储特征以优化其性能或维护。 而且,通过使用文件组或分区方案可以确定索引存储位置来优化性能。
3.5、索引排序顺序设计指南
定义索引时,请考虑索引键列的数据是按升序还是按降序存储。CREATE INDEX、CREATE TABLE 和 ALTER TABLE 语句的语法在索引和约束中的各列上支持关键字 ASC(升序)和 DESC(降序):
当引用表的查询包含用以指定索引中键列的不同方向的 ORDER BY 子句时,指定键值存储在该索引中的顺序很有用。 在这些情况下,索引就无需在查询计划中使用 SORT 运算符。因此,使得查询更有效。
检索数据以满足此条件需要将 Purchasing.PurchaseOrderDetail 表中的 RejectedQty 列按降序(由大到小)排序,并且将 ProductID 列按升序(由小到大)排序,比如:
SELECT RejectedQty, ((RejectedQty/OrderQty)*100) AS RejectionRate, ProductID, DueDate FROM Purchasing.PurchaseOrderDetail ORDER BY RejectedQty DESC, ProductID ASC; GO
此查询的下列执行计划显示了查询优化器使用 SORT 运算符按 ORDER BY 子句指定的顺序返回结果集。
如果使用与查询的 ORDER BY 子句中的键列匹配的键列创建基于磁盘的行存储索引,则无需在查询计划中使用 SORT 运算符,从而使查询计划更有效。
CREATE NONCLUSTERED INDEX IX_PurchaseOrderDetail_RejectedQty ON Purchasing.PurchaseOrderDetail (RejectedQty DESC, ProductID ASC, DueDate, OrderQty); GO
再次执行查询后,下列执行计划显示未使用 SORT 运算符,而使用了新创建的非聚集索引。
总结
覆盖索引是针对非聚集索引的指定,它直接解析一个或几个类似的查询结果,而不访问其基表,并且不会引发查找。 这意味着,由 SELECT 子句以及所有 WHERE 和 JOIN 参数返回的列都被索引所覆盖。 当与表本身的行和列相比,如果索引足够窄,那么执行查询的 I/O 可能会少得多,这意味着它是总列的一个真正子集。 如果选择大型表的一小部分,请考虑覆盖索引,其中的小部分是由一个固定谓词定义,比如一个稀疏列,例如它只包含几个非 NULL 值。
到此这篇关于SQL Server索引设计基础知识详解使用的文章就介绍到这了,更多相关SQL Server索引设计内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
-
SQL Server索引设计基础知识详解使用|世界新资讯为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。索引设计不合理或者缺少索引都会对数据库和应
-
天天播报:文档有空白页删除不了_文档如何删除空白页1、最低0 27元开通文库会员,查看完整内容>原发布者:Jacheslee如何删除word中
-
图纸上计算电缆长度如何计算-如何计算图纸与实际比例 环球要闻1、240乘以150就行了图纸比例等于实际尺寸比上图纸尺寸。本文到此分享完毕,希望对大家有所帮助。
-
每日视讯:收到叔叔临终前的礼物收到叔叔临终前的礼物,我的叔叔是一个农民,平时很少给老人放过自己所赚的钱,现在我挣的时候,所以他给我打了我的钱,我给叔叔
-
共建文明成都 共享幸福蓉城新时代文明实践中心举办了丰富多彩的活动,受到居民青睐。文明成都供图党的二十大报告指出,“中国式现代化是物质文明和精神文明
-
配套产业及资源协同 长虹智慧家庭率先完成市场化_天天百事通每天在我们身边都发生着许多新鲜事,当下的实时热点,最热话题。我们应该多为自己充电,多掌握些知识才能让自己见多识广,眼下互
-
嘉禾县税务局举办所得税汇算培训会_当前观点红网嘉禾分站(通讯员曹妤琪)近日,嘉禾县税务局举办2022年企业所得税和个人所得税汇算专题培训会,全县210余户企业、
-
西安治疗白癜风重点医院西安治疗白癜风重点医院,白癜风是一种比较难治疗的皮肤病,发生时,人体皮肤表面会出现大量白斑。在早期,只有几个白点。白点的大小通常
-
天津滨港电镀企业管理有限公司招聘简章clearfix{clear:both} focusdesca{text-decoration:none;color: 37A;} focus{widt
-
丁腈橡胶行情周报(3.27-4.3) 世界速递4月3日,生意社丁腈橡胶基准价为15850 00元 吨,与本月初持平。生意社丁腈分析师认为,目前原料价格走跌丁腈橡胶成本面下行,下游需求面支撑偏
-
小鹏发布全新SUV车型G6的官方谍照图 竞争目标是特斯拉Model Y4月3日讯:小鹏汽车发布了旗下全新SUV车型G6的官方谍照图,毋庸置疑,该车上市后的竞争目标就是特斯拉ModelY。 此次发布的为一张
-
36氪首发|「DeepMusic」完成近千万美金A+轮融资,用AIGC音乐引擎打造“全民音乐创作时代” 全球快资讯36氪获悉,人工智能音乐服务商「DeepMusic」(灵动音)于日前宣布完成了近千万美金的A+轮融资,GGV纪源资本领投
-
焦点速读:在男人眼中,什么样的女生“性吸引力”更高?在网上看到一个段子:如何判断男人是否好色?你只要把手伸出来放在他鼻子下面,喘气的就好色,不喘气的就不好色。真理总是如此简单又贴合生活
-
视频|正举办见面会,俄罗斯著名军事博主在咖啡馆被炸身亡正观新闻综合报道当地时间4月2日,俄罗斯圣彼得堡一咖啡馆发生爆炸事件,俄罗斯知名战地记者兼军事博主弗拉德伦·塔塔尔斯基在爆炸中丧生,...
-
威少创历史!1年4700万买断加盟第一豪门,感谢湖人威少创历史!1年4700万买断加盟第一豪门,感谢湖人,威少,湖人,快船队,保罗乔治,犹他爵士队,孟菲斯灰熊队
-
石油帝国,艰难转身|天天热文最近,国际上发生了几件大事。一,力推石油人民币结算的沙特,向中国申请了首笔人民币贷款。二,沙特、伊朗在中国握手言和,中东迎来千年变局
-
每日关注!今起三天雨水回归 清明当天厦门局部地区可达大雨量级厦门网讯(厦门日报记者朱道衡)昨天鹭岛雨水暂歇,日头公露面,午间暖意融融。气象部门预测,今起三天,偏南暖湿气流逐渐旺
-
改写天津队两项历史!“刘氏兄弟”包揽冠亚军! 天天快报点击图片观看视频4月2日,全国短道速滑冠军赛在首都体育馆结束了最后一个比赛日的赛程。来自天津短道速滑队的刘少林、刘少昂在男子1000米比赛
-
环球视讯!宝尊电商-W(09991)授出533.05万份限制性股份单位智通财经APP讯宝尊电商W09991发布公告公司于2023年4月1日根据公司2022年股权激励计划向若干承授人授出或建议授出限制性股份单位奖励授出限制性
-
银川搭谈心平台让干部“向组织说说心里话” 每日消息“谈心交流工作机制的建立,让我们可以大胆向组织吐露心声,提出意见建议,畅通了党员干部与组织部门沟通交流的渠道。”银川市一名干部在谈...
-
灵幻先生粤语在线看(幻灵先生粤语)1、您好,在3d4.pw纲站有。2、小和尚终于明白了,世上有很多事是无法提前的,唯有认真的活在当下,才是最真实的人生态度。3、原来,莺鸟的生
-
华舟海洋与中国石油广东石化签署船舶运管服务协议3月28日,深圳市华舟海洋发展股份有限公司(华舟海洋)与中国石油广东石化在海港大厦签署船舶运管服务协议。深圳港集团董事长胡朝阳出席签约仪
-
环球热议:中国短道队本赛季进步不小 但与高手仍存较大差距北京日报客户端|记者王笑笑3月31日,2022-2023赛季全国短道速滑冠军赛在首都体育馆打响,中国短道队主教练张
-
全球快资讯:LPL常规赛最佳阵容公布,JDG和EDG全员入选,RNG无人上榜首先这次常规赛最佳阵容的荣誉评选,JDG和EDG两支在常规赛排名前二的队伍是成为了最大赢家。而JDG剩下三名选手是集体入选常规赛第二最佳阵容,
-
森林防火 人人有责|蓬莱村里集镇智能防火预警平台上线 焦点关注大小新闻3月31日讯(通讯员王艺竹)蓬莱区村里集镇镇辖44个行政村,境内多山地,地势复杂,且因今年以来天气干燥降水较少,森林防火等级持续较
-
济南到泰安火车时刻表和票价_济南到泰安火车时刻表1、截止2017年12月济南到泰安共81趟车。本文到此分享完毕,希望对大家有所帮助。
-
酒店超福利!永和铂爵国际酒店11周年庆,“豪”礼相送 今日热议2012年3月31日,郑州永和铂爵国际酒店的创立,成为郑东新区住宿业的新符号。作为一家河南本土的挂牌五星级酒店,也承载着消费者更多的期许。11
-
上海、香港两地科技创新如何加强合作,今年有这些重点|热推荐今年是上海和香港“沪港合作机制”建立20周年,两地也开展了更进一步的合作,科创则是今年的“关键词”。在3月31日举行的沪港创新发展主题...
-
全球即时:保定汽车抵押贷款的利率是多少?本文从银行贷款利率、贷款机构的不同、抵押物价值的高低以及个人信用状况等多个角度分析了保定汽车抵押贷款的利率,并指出在选择保定汽车抵押
-
贵州台江:“村BA”绘就民族团结“新样板”新华网贵阳3月31日电贵州省台江县地处云贵高原东部,群山葱绿,森林覆盖率达67 4%,富含氧离子,是典型的生态县。这里既有江河并流的历史文明