02. maj 2008 - 01:47Der er
3 kommentarer og 1 løsning
Hjælp til optimering
Det er godt nok ikke en MySql-database jeg bruger, men AbsoluteDatabase. Hvordan optimere jeg følgende? Både selve statement men også hvordan laver jeg et indeks når det er over flere tabeller?
select A.plannerkey, A.starttime, A.endtime, A.treatment, lower(A.customername) as aftalekundenavn, lower(K.customername) as kundenavn, R.name from aftaler A, resmap R, kunder K where lower(R.name) = lower(medarbejdernavn) and A.starttime > '2008-05-02 01:45:00' and A.behandler = R.id and kundenavn = aftalekundenavn order by A.starttime
Det er hevet ud af mit Delphi-program, så medarbejdernavn og datoen bliver normalt dynamisk indsat. Jeg har prøvet select top 20,1 ... for kun at få de første 20 rækker, men det er stadig lige langsomt.
Jeg puttede lige nogle ny-linie m.v. ind for bedre at overskue forespørgslen (og jeg overvejede også at ændre 'select' til 'SELECT, 'from' til 'FROM o.s.v., da dette er standard).
select A.plannerkey, A.starttime, A.endtime, A.treatment, lower(A.customername) as aftalekundenavn, lower(K.customername) as kundenavn, R.name from aftaler A, resmap R, kunder K where lower(R.name) = lower(medarbejdernavn) and A.starttime > '2008-05-02 01:45:00' and A.behandler = R.id and kundenavn = aftalekundenavn order by A.starttime
Men det hjalp nu ikke mig (der heller ikke er den største ekspert i databaseoptimering). Jeg tror imidlertid ikke, der kan gøres så meget m.h.t. optimering, da i hvert fald MySQL er ganske god til selv at gøre dette.
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.