Ik heb een hele grote mysql tabel met 456,927 records, de hele tabel is 454.1 MB.
Nu heb ik een leuke sql query:
select l.*
FROM logs2 l
WHERE l.siteid='1051' and l.dontshow=0 and l.datum >= '1172448000' and l.datum < '1173052800'
ORDER BY l.datum desc
limit 30
Deze query word redelijk vaak uitgevoerd en het is daarom gewenst dat hij wat efficienter word. Ik heb me verdiept in optimalisatie in mysql en de EXPLAIN commando gevonden.
Als ik een explain doe dan krijg ik het volgende:
In de laatste kolom staat dat hij "filesort" gebruikt, dat houd simpel gezegd in dat mysql de harddisk gebruikt en niet het veel snellere geheugen.
Het probleem is nu dat ik die filesort alleen weg kan krijgen als ik "ORDER BY l.datum desc" uit de query haal. Maar dat is helaas niet mogelijk omdat ik dan de verkeerde data terug krijg.
Ik heb indexes gedefinieerd op:
Keyname Type Cardinality
PRIMARY PRIMARY 410075
datum INDEX 410075
siteid INDEX 10514
moodid INDEX 281
dontshow INDEX 2
Kan iemand mij raad geven?
Nu heb ik een leuke sql query:
select l.*
FROM logs2 l
WHERE l.siteid='1051' and l.dontshow=0 and l.datum >= '1172448000' and l.datum < '1173052800'
ORDER BY l.datum desc
limit 30
Deze query word redelijk vaak uitgevoerd en het is daarom gewenst dat hij wat efficienter word. Ik heb me verdiept in optimalisatie in mysql en de EXPLAIN commando gevonden.
Als ik een explain doe dan krijg ik het volgende:
code:
1
2
| id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE l ref datum,siteid,dontshow siteid 4 const 690 Using where; Using filesort |
In de laatste kolom staat dat hij "filesort" gebruikt, dat houd simpel gezegd in dat mysql de harddisk gebruikt en niet het veel snellere geheugen.
Het probleem is nu dat ik die filesort alleen weg kan krijgen als ik "ORDER BY l.datum desc" uit de query haal. Maar dat is helaas niet mogelijk omdat ik dan de verkeerde data terug krijg.
Ik heb indexes gedefinieerd op:
Keyname Type Cardinality
PRIMARY PRIMARY 410075
datum INDEX 410075
siteid INDEX 10514
moodid INDEX 281
dontshow INDEX 2
Kan iemand mij raad geven?