Heim Datenbank MySQL-Tutorial 消除Key Lookup和RID Lookup Part2:索引交集和索引Join

消除Key Lookup和RID Lookup Part2:索引交集和索引Join

Jun 07, 2016 pm 03:43 PM
key 交集 消除 索引

今天在MSDN查询优化建议中看到这样一条信息:SQL Server 会自动考虑索引交集并可以在同一查询中对 同一个表使用多个索引 (可能跟大家的理解有偏差)。 在解释之前我们先看一个例子: use AdventureWorks go select soh .* from sales . SalesOrderHeader AS

今天在MSDN查询优化建议中看到这样一条信息:SQL Server 会自动考虑索引交集并可以在同一查询中对同一个表使用多个索引(可能跟大家的理解有偏差)。

 

在解释之前我们先看一个例子:

 

useAdventureWorks

go

select soh.*

from sales.SalesOrderHeaderASsoh

WHERE soh.SalesPersonID= 276

and soh.OrderDatebetween'4/1/2002'and'7/1/2002'

 

查看执行计划:

消除Key Lookup和RID Lookup Part2:索引交集和索引Join

                             

虽然我们建立了SalesPersonID的非聚集索引,但是SQL Server并没有使用,因为OrderDate并没有包含在索引中。 相信这时候大部分的人会在索引上面加一列OrderDate.其实可以还可以有另外一种方法,不改变现在的索引,而新添加一个新索引。 这样SQL Server可以使用多个索引来完成本次查询,这个过程就是索引交集。

 

那么我们现在OrderDate上面创建一个索引:

 

CREATE NONCLUSTEREDINDEX[ix_orderdate]ON [Sales].[SalesOrderHeader](      [OrderDate]ASC)

 

增加索引后我们会看到下面的执行计划:

 消除Key Lookup和RID Lookup Part2:索引交集和索引Join

  

这次SQL Server使用了两个Non-clustered index seek,然后获得两个子集的索引交集,最后通过Keylookup获得所有输出字段.而通常我们认为一个对一个表的查询不会用到多个索引。其实SQLServer 优化引擎是可以使用到多个索引的优势。

 

上面的测试给我们一种启示,有的时候不一定要通过一个宽索引列(多个索引键值)提高性能,也可以通过多个窄索引键提升性能。另外如果你发现索引没有覆盖到所以的查询条件,但是你又不能直接改索引时,添加另外一个索引也可以满足你的要求。

 

而索引联接是索引交集的一个变种,如果查询能够从索引中直接获得所需要的数据,就会称为Index join(上面我们看到数据还是需要Key Lookup中获取,Index无法提供所有的数据).

 

更多信息可以参考:

http://msdn.microsoft.com/zh-cn/library/ms188722(v=sql.105).aspx

http://msdn.microsoft.com/zh-cn/library/aa226170(v=sql.70).aspx

 

 

 

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was bedeutet das Identitätsattribut in SQL? Was bedeutet das Identitätsattribut in SQL? Feb 19, 2024 am 11:24 AM

Was bedeutet das Identitätsattribut in SQL?

Verwenden Sie die PHP-Funktion array_intersect_key(), um den Schnittpunkt zu ermitteln Verwenden Sie die PHP-Funktion array_intersect_key(), um den Schnittpunkt zu ermitteln Jun 27, 2023 pm 07:31 PM

Verwenden Sie die PHP-Funktion array_intersect_key(), um den Schnittpunkt zu ermitteln

Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte Sep 04, 2024 pm 06:32 PM

Die nicht patchbare Sicherheitslücke im Yubico-Zwei-Faktor-Authentifizierungsschlüssel beeinträchtigt die Sicherheit der meisten Yubikey 5-, Security Key- und YubiHSM 2FA-Geräte

So lösen Sie das Problem der Stapellöschung von Schlüsselwerten in Redis So lösen Sie das Problem der Stapellöschung von Schlüsselwerten in Redis May 31, 2023 am 08:59 AM

So lösen Sie das Problem der Stapellöschung von Schlüsselwerten in Redis

Was sind die Oracle-Indextypen? Was sind die Oracle-Indextypen? Nov 16, 2023 am 09:59 AM

Was sind die Oracle-Indextypen?

Der beste Zeitpunkt, um die Huawei Mate 60-Serie, die neue KI-Eliminierung + Image-Upgrade zu kaufen und Herbstaktionen zu genießen Der beste Zeitpunkt, um die Huawei Mate 60-Serie, die neue KI-Eliminierung + Image-Upgrade zu kaufen und Herbstaktionen zu genießen Aug 29, 2024 pm 03:33 PM

Der beste Zeitpunkt, um die Huawei Mate 60-Serie, die neue KI-Eliminierung + Image-Upgrade zu kaufen und Herbstaktionen zu genießen

So lösen Sie das Problem, dass der Index das Array-Limit überschreitet So lösen Sie das Problem, dass der Index das Array-Limit überschreitet Nov 15, 2023 pm 05:22 PM

So lösen Sie das Problem, dass der Index das Array-Limit überschreitet

Wie kann die Effizienz der Datengruppierung und Datenaggregation in PHP und MySQL durch Indizes verbessert werden? Wie kann die Effizienz der Datengruppierung und Datenaggregation in PHP und MySQL durch Indizes verbessert werden? Oct 15, 2023 am 11:39 AM

Wie kann die Effizienz der Datengruppierung und Datenaggregation in PHP und MySQL durch Indizes verbessert werden?

See all articles