11. januar 2007 - 18:40Der er
10 kommentarer og 1 løsning
Performance i forbindelse med LIKE
Jeg vil gerne høre, om det overhovedet kan betale sig at gøre felter til index, som der skal kunne søges på med LIKE.
Altså fx
SELECT * FROM person WHERE navn LIKE '%smith%'
Hvis jeg har opfattet indeksering korrekt, vil det ikke have nogen betydning om "navn" er indekseret eller ej, når man søger på denne måde. Har jeg ret?
Og er der så andre måder man kan effektivisere denne søgning på?
Feltet vil typisk være en NVARCHAR med varierende størrelse.
Er der automatisk indeksering på foreign keys? Jeg går ikke ud fra det, da de for mig virker som almindelige constraints, så vil det ikke altid være en fordel af lave indeksering på disse? (Non-clustered naturligvis)
Og er der forskel på effektiviteten i følgende sætning?:
SELECT * FROM x JOIN y ON x.A = y.A JOIN z ON z.B = x.B WHERE y.C = 1
og
SELECT * FROM x JOIN y ON x.A = y.A AND y.C = 1 JOIN z ON z.B = x.B
jeg mener ikke at der er index paa foreign keys (men slaa op i docs - du ved godt at SQLServers docs kan downlodes fra MS ?)
set ud fra et generelt SQL synsvinkel er der ikke grund til at tro at den ene er mer effektiv end den anden, men for din speciefikke SQLServer version kan der godt vaere forskel - du kan bede SQLServer lave en execution plan for de 2 og studere resultatet (husk at have de rigtige data maengder)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.