31. januar 2004 - 17:27Der er
18 kommentarer og 1 løsning
MEGET langsom SQL
X Jeg har for nyligt konverteret fra Access database til mySQL. Jeg har nu et problem med, at en del af min kode, bruger meget lang genereringstid. Det gjorde det ikke før, da jeg havde Access databasen. Følgende SQL, timer nogen gange ud, andre gange bruger den omkring 30 sek.
SQL = "SELECT photos.id FROM photos INNER JOIN comments ON photos.id = comments.photo WHERE category <> 15 AND category <> 32 GROUP BY photos.id ORDER BY comments.id DESC limit 0,4"
Nogen forslag til hvad der er galt / kan gøres anderledes ?
Jeg kan ikke helt se at den skulle virke. Hvad med:
SELECT photos.id, MAX(comments.ID) as lastCommentId FROM photos INNER JOIN comments ON photos.id = comments.photo WHERE category <> 15 AND category <> 32 GROUP BY photos.id ORDER lastCommentId DESC limit 0,4
jeg benytter phpmyadmin til at administrere mysql databasen. Der er et felt som hedder størrelse, når jeg vil oprette et index, har det noget at sige ?
Det burde ikke være noget problem, selv ikke ved rigtig mange rækker. Alternativt kunne du oprette en kolonne i fototabellen som indeholder sidste kommetar ID. Den skal du selvfølgelig holde ved lige. Så skal du ikke joine.
Ja det er selvf. en mulighed, men så er problemet, hvis 2 brugere (i teorien), opretter en kommentar til det samme billede samtidigt... jeg kan ikke forstå, at mysql ikke kan trække den SQL, når Access kan. Jeg må gøre noget forkert.
SQL = "SELECT photos.id, MAX(comments.id) AS lastcommentid FROM photos, comments WHERE photos.id = comments.photo AND category <> 15 AND category <> 32 GROUP BY photos.id ORDER BY lastcommentid DESC limit 0,4"
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.