14. september 2004 - 09:29Der er
10 kommentarer og 2 løsninger
Min søgning tager for lang tid
Jeg har en ret komplex søgning som nogen gange tager så lang tid at jeg får en timeout. Hvordan optimere jeg denne søgning:
SELECT tblVare.billedeNavn, tblVare.tegningNavn, tblVare.vareId, s1.tekst AS tekst, s2.tekst AS beskrivelse, s3.tekst AS undergruppe FROM tblVare INNER JOIN tblSprog s1 ON s1.sprogId = tblVare.tekstSprogId INNER JOIN tblSprog s2 ON s2.sprogId = tblVare.beskrivelseSprogId INNER JOIN tblUnderGrupper ON tblVare.underGruppeId = tblUnderGrupper.underGruppeId INNER JOIN tblSprog s3 ON s3.sprogId = tblUnderGrupper.navnSprogId WHERE (s1.sprogKode = 'da') AND (s2.sprogKode = 'da') AND (s3.sprogKode = 'da') AND (s1.tekst LIKE '%skovl%' OR s2.tekst LIKE '%skovl%') ORDER BY s1.tekst
1. Har du index på de felter spm du joiner med ?? 2. Det der taget tiden er dine LIKE statements. Der kan du i stedet anvende FULL- TEXT SEARCH funktionen. 3. Prøv evt. at køre dit SQL i Query Analyzer, og tjek Execution Planen.
Medmindre du vil skifte til full text indexering som er et helt andet koncept, så er der ikke noget teknisk alternativ.
Men du kan fortælle din chef at enten må brugerne leve med at de skal angive starten af det de søger efter eller så skal der anskaffes en større server.
tree indexes (altså ikke hash indexes) hjælper på WHERE LIKE uden start %
index hjælper ikke på WHERE LIKE med start %
Synes godt om
Ny brugerNybegynder
Din løsning...
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.