Hvormange kategorier er der? Hvormange rækker indeholder den tabel?
Hvad indeholder tabellen "validering"? Hvormange rækker indeholder den tabel?
Det lyder altså ikke at meget data. Hvad vil det helt konkret sige, at det tager lang tid at vise siden (i sekunder)?
Der er mange steder hvor hastigheden kan påvirkes. Nogle eksempler (ud over databasen):
* koden der genererer indholdet
* siden der genereres (html, script)
* netværket
* serveren (ram, cpu, antal samtidige brugere, belastning i øvrigt)
Er det evt. muligt at vise koden, der genererer siden?
Hvor stor er den side der genereres (i Kb)?
Jeg er usikker på hvormeget Access-driveren optimerer på SQL, men jeg har på fornemmelsen, at det ikke er det store. Derfor er der måske noget at hente ved selv at optimere sin joins der laves, således der joines med færrest mulig rækker til følge og kriterier tjekkes fra simplest først til mest kompleks sidst. Evt. lave et subquery, hvor der kun joines med den mængde data der rent faktisk matcher kriterierne (dvs. subquery inden join).
Noget i stil med dette:
SELECT
Emner.EmneID,
Emner.Titel,
Emner.Beskrivelse,
Emner.DokumentURL,
Emner.KategoriID,
Emner.Opretter,
Emner.Dato,
Emner.Score,
Emner.Kommentarer,
validering.navn
FROM (
(
(
SELECT *
FROM tblEmner
WHERE (tblEmner.Titel LIKE '%' + ? + '%')
AND (tblEmner.Beskrivelse LIKE '%' + ? + '%')
) AS Emner
INNER JOIN tblKategorier ON tblKategorier.KategoriID = Emner.KategoriID
)
LEFT OUTER JOIN validering
ON Emner.Opretter = validering.wrx
)
WHERE
(tblKategorier.Aktiv = ?)
ORDER BY
Emner.Dato DESC
Jeg ved ikke om dette overhovedet fungerer, så det er bare nogle tanker ifht. tiltag man kan arbejde med for at forsøge at optimere selve forspørgslen.
NB: Da der er byttet rundt på rækkefølgen af parametrene i SQL-sætningen, vil den givetvis ikke fungere med den eksisterende kode, så der skal nok også rettes i koden.