Ik heb een database waarin ik elk uur data log. Nu wil ik uit die database de eerste rij van vandaag hebben. Ik doe dat met de volgende query:
SELECT MIN(units) as units FROM data WHERE meter_id = 11 AND DATE(timeStamp) = CURDATE() limit 1;
Ik heb dus een tabel data met een kolom units, meter_id en een timestamp(datetime). Op de kolom meter_id heb ik een index.
Mijn probleem is nu dat de performance mij erg tegen valt. Bovenstaande query komt binnen 0.11 sec terug uit een tabel met 37000 records waarbij er twee verschillende meter_id's zijn. Volgens mij zou mysql dus moeten zoeken over ongeveer de helft van 37000. Verwijder ik de index van meter_id dan komt de query terug in 0.025 sec. Ook het laatste vind ik nog vrij lang.
Waar doe ik het fout?
SELECT MIN(units) as units FROM data WHERE meter_id = 11 AND DATE(timeStamp) = CURDATE() limit 1;
Ik heb dus een tabel data met een kolom units, meter_id en een timestamp(datetime). Op de kolom meter_id heb ik een index.
Mijn probleem is nu dat de performance mij erg tegen valt. Bovenstaande query komt binnen 0.11 sec terug uit een tabel met 37000 records waarbij er twee verschillende meter_id's zijn. Volgens mij zou mysql dus moeten zoeken over ongeveer de helft van 37000. Verwijder ik de index van meter_id dan komt de query terug in 0.025 sec. Ook het laatste vind ik nog vrij lang.
Waar doe ik het fout?