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

SQL Server 2005 uložil do mezipaměti plán provádění, který nikdy nemohl fungovat

Mohlo by vás zajímat První pravidlo programování .

Clusterový index vždy obsahuje všechny řádky. Může být seřazen podle z , ale stále bude obsahovat všechny ostatní sloupce na úrovni listu.

Důvod, proč SQL Server někdy upřednostňuje clusterované skenování před hledáním indexu, je tento. Když provádíte hledání indexu, musíte na něj navázat vyhledáváním záložek do seskupeného indexu, abyste získali sloupce, které nejsou v indexu.

Když provádíte skenování seskupeného indexu, podle definice najdete všechny sloupce. To znamená, že není vyžadováno žádné vyhledávání záložek.

Když SQL Server očekává mnoho řádků, pokusí se vyhnout vyhledávání záložek. Toto je časem prověřená volba. Neklastrovaná hledání indexů jsou běžně překonávána prohledáváním klastrovaných indexů.

Pro svůj případ to můžete otestovat vynucením buď pomocí with (index(IX_YourIndex)) nápověda k dotazu .




  1. Použité příkazy SELECT mají různý počet sloupců

  2. Rozdíly ve výkonu mezi rovným (=) a IN s jednou doslovnou hodnotou

  3. Jak simulovat UNPIVOT v Accessu?

  4. Oracle SQL - Dotaz na tabulky 2 na základě jejich cizích klíčů