sql >> Databasteknik >  >> RDS >> Sqlserver

Hur viktig är ordningen på kolumner i index?

Titta på ett index så här:

Cols
  1   2   3
-------------
|   | 1 |   |
| A |---|   |
|   | 2 |   |
|---|---|   |
|   |   |   |
|   | 1 | 9 |
| B |   |   |
|   |---|   |
|   | 2 |   |
|   |---|   |
|   | 3 |   |
|---|---|   |

Se hur begränsning på A första, eftersom din första kolumn eliminerar fler resultat än begränsning på din andra kolumn först? Det är enklare om du föreställer dig hur indexet måste korsas tvärs över, kolumn 1, sedan kolumn 2, etc...du ser att om du tappar de flesta resultaten i första passet gör det andra steget så mycket snabbare.

Ett annat fall, om du frågade i kolumn 3, skulle optimeraren inte ens använda indexet, eftersom det inte är till någon hjälp alls för att begränsa resultatuppsättningarna. När du är i en fråga, minskar antalet resultat att hantera innan nästa steg innebär bättre prestanda.

Eftersom indexet också lagras på detta sätt, finns det ingen backtracking över indexet för att hitta den första kolumnen när du frågar efter den.

Kort sagt:Nej, det är inte för att visa, det finns verkliga prestandafördelar.



  1. Förbereda en MySQL- eller MariaDB-server för produktion - del två

  2. Hur aktiverar jag MSDTC på SQL Server?

  3. PHP-kod för att konvertera en MySQL-fråga till CSV

  4. Använda Oracle JDeveloper Snippets med MySQL