SQL: kinerja sing kurang apik sanajan ana indeks

Aku mung nemoni masalah kinerja ing database SQL ing ngisor iki: Ing tabel SQL sing diarani "pangguna" kanthi ~ 1.000.000 entri, butuh 28 detik sing ora bisa ditampa kanggo nemtokake jumlah registrasi saiki. Wektu registrasi disimpen ing format "Ymd H: i: s" ing kolom "digawe".


Pitakon sing digunakake

SELECT COUNT(ID) FROM users WHERE DATE(created) = '2014-12-21';

nyebabake wektu mbukak iki, sanajan wis ana indeks ing kolom "digawe" format DATETIME

ALTER TABLE `users` ADD INDEX `created` (`created`);

wis disetel. Alesan kinerja sing kurang apik yaiku telpon fungsi DATE: Kolom sing diindeks "digawe" dikirim dening fungsi DATE lan nggawe indeks ora efektif. Query Optimizer mung ngerti "digawe", nanging dudu asile DATE (digawe). Pitakon sing dioptimalake

SELECT COUNT(ID) FROM users WHERE created BETWEEN '2014-12-21' AND '2014-12-21 23:59:59';

ndadékaké asil sing dipengini ing wektu 0,4 detik.

Bali