Mads --------------------- ID Priority Url BannerTag Area_Sort Area_ViewItem Active E_Views Views_Total E_Clicks Clicks_Total
Mads_Areas --------------------- MadsID ForumID
Forspørgslen:
SELECT MadsAreasAlias.MadsID AS Arr0, MadsAreasAlias.ForumID AS Arr1, MadsAlias.Priority AS Arr2, MadsAlias.Url AS Arr3, MadsAlias.BannerTag AS Arr4, MadsAlias.Area_Sort AS Arr5, MadsAlias.Area_ViewItem AS Arr6 FROM Mads_Areas AS MadsAreasAlias, Mads AS MadsAlias WHERE MadsAlias.ID=MadsAreasAlias.MadsID AND MadsAlias.Active=1 AND MadsAlias.E_Views>MadsAlias.Views_Total AND MadsAlias.E_Clicks>MadsAlias.Clicks_Total ORDER BY MadsAreasAlias.MadsID, MadsAreasAlias.ForumID;
Først: Du har ikke to databaser, du har én database med to tabeller
Jeg går udfra at ID er primær nøgle i tabellen Mads. Jeg ville så vælge at indexere MadsID i tabellen Mads_Areas, fordi det er det felt der skal svare til ID i Mads.
Man kunne også vælge at indexere Mads_Areas.ForumID, fordi du sikkert ofte vil sortere efter ForumID, eller SELECT'e noget hvor ForumID skal være noget bestemt.
De andre kolonner som du bruger i din WHERE, som skal være større end eller mindre end hinanden kunne man også indexere, men spar lidt på det. Se hvor meget udbytte du får, og hus at su sagtens kan slette et index igen.
I øvrigt: Du bruger alias til dine tabeller, det er da vist ikke nødvendigt, er det?
MySQL kan også, men vil ignorere indexes hvis tabellen er meget lille eller hvis det på forhånd kan udregnes, at en væsenlig del af posterne (vist nok omkring 30%) skal kigges på -- i dette tilfælde antages det at være hurtigere simpelt hen at læse hele tabellen og grave informationerne frem.
falslev>> skriv EXPLAIN foran din SELECT, og læg output her. Overvej evt. at afslutte med "\G" frem for ";" -- det gør tingene lidt mere læsbare :-)
Hvor meget data har du i dine tabeller? Hvis du kun har nogle få rækker vil MySQL ignorere dine indeks ud fra en betragtning om det er meget hurtigere at indlæse hele tabellen med det samme...
Som tidligere skrevet: vis din EXPLAIN her, så slipper vi for at lave gætværk
Det er ligegyldigt om du har indexes - en EXPLAIN fortæller stadigvæk hvordan MySQL ser på dine joins.
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.