sql >> Database >  >> RDS >> Sqlserver

SQL Server 2005 heeft een uitvoeringsplan in de cache opgeslagen dat nooit zou kunnen werken

Mogelijk bent u geïnteresseerd in de Eerste programmeerregel .

Een geclusterde index omvat altijd alle rijen. Het kan worden besteld door z , maar het bevat nog steeds alle andere kolommen op bladniveau.

Dit is de reden waarom SQL Server soms de voorkeur geeft aan een geclusterde scan boven een indexzoekopdracht. Wanneer u een indexzoekopdracht uitvoert, moet u deze opvolgen met een bladwijzerzoekopdracht naar de geclusterde index om kolommen op te halen die niet in de index staan.

Wanneer u een geclusterde indexscan doet, vindt u per definitie alle kolommen. Dat betekent dat er geen bladwijzers nodig zijn.

Wanneer SQL Server veel rijen verwacht, probeert het de bladwijzerzoekopdrachten te vermijden. Dit is een beproefde keuze. Niet-geclusterde indexzoekacties worden routinematig verslagen door geclusterde indexscans.

U kunt dit voor uw geval testen door te forceren met de with (index(IX_YourIndex)) vraaghint .




  1. MYSQL cumulatieve som op datum

  2. MySQL-prestaties verbeteren op een eenmaal uitgevoerde query met een grote dataset

  3. Hoe vind je alle buitenlandse sleutels?

  4. Niet-ASCII-tekens zoeken en verwijderen uit een Oracle Varchar2