pbootcms网站模板|日韩1区2区|织梦模板||网站源码|日韩1区2区|jquery建站特效-html5模板网

包含列的索引,有什么區別?

Indexes with included columns, what#39;s the difference?(包含列的索引,有什么區別?)
本文介紹了包含列的索引,有什么區別?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我從來沒有真正理解這兩個索引之間的區別,誰能解釋一下區別是什么(性能方面,索引結構在數據庫中的外觀,存儲方面等)?

I've never really understood the difference between these two indexes, can someone please explain what the difference is (performance-wise, how the index structure will look like in db, storage-wise etc)?

包含索引

CREATE NONCLUSTERED INDEX IX_Address_PostalCode  
ON Person.Address (PostalCode) 
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID); 

'普通'索引

CREATE NONCLUSTERED INDEX IX_Address_PostalCode  
ON Person.Address (PostalCode, AddressLine1, AddressLine2, City, StateProvinceID);

推薦答案

索引的內部存儲采用 B-Tree 結構,由索引頁"(根頁和所有中間頁)和索引數據頁"(僅葉頁).

The internal storage of indexes uses a B-Tree structure and consists of "index pages" (the root and all intermediate pages) and "index data pages" (the leaf pages only).

注意不要將索引數據頁"與存儲大部分實際數據列的數據頁"(聚集索引的葉頁)混淆.

Note do not confuse "index data pages" with the "data pages" (leaf pages of clustered indexes) which store most of the columns of actual data.

  • 只有索引列存儲在索引頁上.
  • 通過在 INCLUDE 部分放置一些列,每個索引鍵存儲在每個頁面上的數據更少.
  • 意味著需要更少的頁面來保存索引鍵.(更輕松地將這些常用頁面緩存在內存中更長時間.)
  • 樹中的級別可能更少.(在這種情況下,性能優勢會更大,因為每個樹級別遍歷都是另一次磁盤訪問.)
    • Only the index columns are stored on the index pages.
    • By placing some columns in the INCLUDE section, less data per index key is stored on each page.
    • Meaning fewer pages are needed to hold the index keys. (Making it easier to cache these frequently used pages in memory for longer.)
    • And possibly fewer levels in the tree. (In such a case performance benefits can be much bigger because every tree level traversal is another disk access.)
    • 當使用索引時,索引鍵用于通過索引頁導航到正確的索引數據頁.

      When an index is used, the index key is used to navigate through the index pages to the correct index data page.

      • 如果索引具有 INCLUDE 列,則該數據在查詢需要時立即可用.
      • 如果查詢需要在索引鍵或 INCLUDE 列中不可用的列,則需要對聚集索引中的正確行(或堆,如果沒有聚集索引)進行額外的書簽查找"已定義索引).
      • If the index has INCLUDE columns, that data is immediately available should the query need it.
      • If the query requires columns not available in either the index keys or the INCLUDE columns, then an additional "bookmark lookup" is required to the correct row in the clustered index (or heap if no clustered index defined).

      一些注意事項,希望能解決您的一些困惑:

      Some things to note that hopefully addresses some of your confusion:

      • 如果您的索引的鍵和查詢中的過濾器選擇性不夠,那么該索引將被忽略(無論您的 INCLUDE 列中有什么內容).
      • 您創建的每個索引都有 INSERT 和 UPDATE 語句的開銷;對于更大"的索引更是如此.(更大的也適用于 INCLUDE 列.)
      • 因此,雖然理論上您可以創建大量包含列的大索引以匹配訪問路徑的所有排列:這會適得其反.
      • If the keys of your index and filters in your query are not selective enough, then the index will be ignored (regardless of what's in your INCLUDE columns).
      • Every index you create has overhead for INSERT and UPDATE statements; more so for "bigger" indexes. (Bigger applies to INCLUDE columns as well.)
      • So while you could in theory create a multitude of big indexes with include columns to match all the permutations of access paths: it would be very counter-productive.

      值得注意的是,在 INCLUDE 列被添加為一項功能之前:

      It's worth noting that before INCLUDE columns were added as a feature:

      • 擴展索引的鍵以包含索引/過濾器中不需要的列是一種常見的索引調整技巧".(稱為覆蓋索引.)
      • 這些列通常在輸出列中需要,或者作為連接到其他表的參考列.
      • 這將避免臭名昭著的書簽查找",但缺點是使索引比嚴格需要的更寬".
      • 事實上,索引中較早的列通常已經確定了唯一行,這意味著如果不是為了避免書簽查找",額外包含的列將是完全多余的" 好處.
      • INCLUDE 列基本上可以更有效地獲得相同的好處.
      • It was a common index tuning 'trick' to expand the keys of an index to include columns that weren't needed in the index/filter. (Known as a covering index.)
      • These columns were commonly required in output columns or as reference columns for joins to other tables.
      • This would avoid the infamous "bookmark lookups", but had the disadvantage of making the index 'wider' than strictly necessary.
      • In fact very often the earlier columns in the index would already identify a unique row meaning the extra included columns would be completely redundant if not for the "avoiding bookmark lookups" benefit.
      • INCLUDE columns basically allow the same benefit more efficiently.

      注意 需要指出的一點很重要.如果您養成總是將查詢編寫為 SELECT * ... 的懶惰習慣,那么您通常從索引中的 INCLUDE 列中獲得零收益.通過返回所有列,您基本上可以確保在任何情況下都需要進行書簽查找.

      NB Something very important to point out. You generally get zero benefit out of INCLUDE columns in your indexes if you're in the lazy habit of always writing your queries as SELECT * .... By returning all columns you're basically ensuring a bookmark lookup is required in any case.

      這篇關于包含列的索引,有什么區別?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

      【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

SQL trigger on Truncate(截斷時的 SQL 觸發器)
sql search query with multiple optional search parameters(具有多個可選搜索參數的 sql 搜索查詢)
SQL Efficiency: WHERE IN Subquery vs. JOIN then GROUP(SQL 效率:WHERE IN 子查詢 vs. JOIN 然后 GROUP)
Retrieving XML element name using t-SQL(使用 t-SQL 檢索 XML 元素名稱)
Insert double quotes into SQL output(在 SQL 輸出中插入雙引號)
Delete rows from CTE in SQL SERVER(從 SQL SERVER 中的 CTE 中刪除行)
主站蜘蛛池模板: 北京租车公司_汽车/客车/班车/大巴车租赁_商务会议/展会用车/旅游大巴出租_北京桐顺创业租车公司 | 江苏齐宝进出口贸易有限公司| 二次元影像仪|二次元测量仪|拉力机|全自动影像测量仪厂家_苏州牧象仪器 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 书法培训-高考书法艺考培训班-山东艺霖书法培训凭实力挺进央美 | 艺术涂料_进口艺术涂料_艺术涂料加盟_艺术涂料十大品牌 -英国蒙太奇艺术涂料 | 全自动五线打端沾锡机,全自动裁线剥皮双头沾锡机,全自动尼龙扎带机-东莞市海文能机械设备有限公司 | 考勤系统_人事考勤管理系统_本地部署BS考勤系统_考勤软件_天时考勤管理专家 | 美的商用净水器_美的直饮机_一级代理经销商_Midea租赁价格-厂家反渗透滤芯-直饮水批发品牌售后 | 太原装修公司_山西整装家装设计_太原室内装潢软装_肖邦家居 | 大倾角皮带机-皮带输送机-螺旋输送机-矿用皮带输送机价格厂家-河南坤威机械 | 北京律师事务所_房屋拆迁律师_24小时免费法律咨询_云合专业律师网 | 济南网站建设|济南建网站|济南网站建设公司【济南腾飞网络】【荐】 | 钢格栅板_钢格板网_格栅板-做专业的热镀锌钢格栅板厂家-安平县迎瑞丝网制造有限公司 | 杭州门窗厂家_阳光房_包阳台安装电话-杭州窗猫铝合金门窗 | SRRC认证_电磁兼容_EMC测试整改_FCC认证_SDOC认证-深圳市环测威检测技术有限公司 | 英国公司注册-新加坡公司注册-香港公司开户-离岸公司账户-杭州商标注册-杭州优创企业 | 工装定制/做厂家/公司_工装订做/制价格/费用-北京圣达信工装 | 超声骨密度仪,双能X射线骨密度仪【起草单位】,骨密度检测仪厂家 - 品源医疗(江苏)有限公司 | 斗式提升机,斗式提升机厂家-淄博宏建机械有限公司 | 浙江皓格药业有限公司| 脉冲除尘器,除尘器厂家-淄博机械| 不锈钢水管-不锈钢燃气管-卫生级不锈钢管件-不锈钢食品级水管-广东双兴新材料集团有限公司 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 涿州网站建设_网站设计_网站制作_做网站_固安良言多米网络公司 | 电动垃圾车,垃圾清运车-江苏速利达机车有限公司| 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 深圳VI设计-画册设计-LOGO设计-包装设计-品牌策划公司-[智睿画册设计公司] | 北京包装设计_标志设计公司_包装设计公司-北京思逸品牌设计 | 防水套管-柔性防水套管-刚性防水套管-上海执品管件有限公司 | AR开发公司_AR增强现实_AR工业_AR巡检|上海集英科技 | 两头忙,井下装载机,伸缩臂装载机,30装载机/铲车,50装载机/铲车厂家_价格-莱州巨浪机械有限公司 | 厚壁钢管-厚壁无缝钢管-小口径厚壁钢管-大口径厚壁钢管 - 聊城宽达钢管有限公司 | 武汉天安盾电子设备有限公司 - 安盾安检,武汉安检门,武汉安检机,武汉金属探测器,武汉测温安检门,武汉X光行李安检机,武汉防爆罐,武汉车底安全检查,武汉液体探测仪,武汉安检防爆设备 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 桨叶搅拌机_螺旋挤压/方盒旋切造粒机厂家-无锡市鸿诚输送机械有限公司 | 洗地机-全自动/手推式洗地机-扫地车厂家_扬子清洁设备 | 塑胶跑道_学校塑胶跑道_塑胶球场_运动场材料厂家_中国塑胶跑道十大生产厂家_混合型塑胶跑道_透气型塑胶跑道-广东绿晨体育设施有限公司 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 长江船运_国内海运_内贸船运_大件海运|运输_船舶运输价格_钢材船运_内河运输_风电甲板船_游艇运输_航运货代电话_上海交航船运 | 游泳池设备安装工程_恒温泳池设备_儿童游泳池设备厂家_游泳池水处理设备-东莞市君达泳池设备有限公司 |