sql >> Databáze >  >> RDS >> Sqlserver

Proč se v mém plánu realizace objevuje nějaký druh?

SQL Server má na výběr ze tří algoritmů, když potřebuje spojit dvě tabulky. Funkce Nested-Loops-Join, Hash-Join a Sort-Merge-Join. Kterou z nich vybere, to na základě odhadů nákladů. V tomto případě došlo k závěru, že na základě informací, které měl k dispozici, byla Sort-Merge-Join správná volba.

V plánech provádění SQL Serveru je řazení-sloučení rozděleno na dva operátory, Sort a Merge-Join, protože operace řazení nemusí být nutná, například pokud jsou data již setříděna.

Další informace o připojeních najdete v mé sérii připojení zde:http://sqlity.net/en/1146/a-join-a-day-introduction/ Článek o Sort-Merg-Join je zde:http://sqlity.net/cs/1480/a-join-a-day-the-sort-merge-join/

Aby byl váš dotaz rychlejší, nejprve bych se podíval na indexy. V dotazu máte spoustu prohledávání seskupeného indexu. Pokud můžete několik z nich nahradit hledáním, budete pravděpodobně lepší. Zkontrolujte také, zda odhady, které SQL Server vytváří, odpovídají skutečným počtům řádků ve skutečném plánu provádění. Pokud jsou daleko, SQL Server často dělá špatná rozhodnutí. Poskytování lepších statistik vám tedy může pomoci i při výkonu dotazů.



  1. Inverzní k SQL LIKE '%value%'

  2. Povolit uživateli vytvářet a upravovat tabulku?

  3. Podmíněné pořadí podle

  4. Snažíme se nepotřebovat dvě samostatná řešení pro x86 a x64 program