SQL Server: indexkolommen die worden gebruikt zoals?

Is het een goed idee om varchar-kolommen alleen in te wisselen in net als opertaties? Van wat ik kan lezen van query-analyse krijg ik uit de volgende vraag:

SELECT * FROM ClientUsers WHERE Email LIKE '%niels@bosmainter%'

Ik krijg een “geschatte substructuurkosten” van 0,38 zonder een index en 0,14 met een index. Is dit een goede metriek om te gebruiken voor Anlayzing als een query is geoptimaliseerd met een index?


Antwoord 1, Autoriteit 100%

Gezien de gegevens ‘ABCDEFG’

WHERE Column1 LIKE '%cde%'  --can't use an index
WHERE Column1 LIKE 'abc%' --can use an index
WHERE Column1 Like '%defg' --can't use an index, but see note below

OPMERKING: als u belangrijke zoekopdrachten heeft die ‘% DEFG’ vereisen, kunt u een aanhoudende berekende kolom gebruiken waar u () de kolom en vervolgens indexeert. Uw kan dan vragen:

WHERE Column1Reverse Like REVERSE('defg')+'%' --can use the persistent computed column's index

Antwoord 2, Autoriteit 15%

In mijn ervaring zullen de eerste% -sign een index nutteloos maken, maar één aan het einde zal de index gebruiken.


Antwoord 3, Autoriteit 8%

Om het deel van uw vraag van uw vraag te beantwoorden: het type index / tabel scannen / zoeken wordt uitgevoerd, is een goede indicator om te weten of een index (op de juiste manier) wordt gebruikt. Het wordt meestal bovenste weergegeven in de queryplananalysator.

De volgende scan / zoektypen zijn gesorteerd van het ergste (boven) tot het beste (onder):

  • TABEL SCAN
  • geclusterde index scannen
  • Index scannen
  • geclusterde index zoeken
  • Index zoekt

Als een vuistregel, probeer je normaal gesproken waar mogelijk naar scans te krijgen. Zoals altijd zijn er uitzonderingen, afhankelijk van de tabelgrootte, vragende kolommen, enz. Ik raad aan een zoeken op StackoverFlow Voor “Scan Seek-index”, en u krijgt veel goede informatie over dit onderwerp.

Other episodes