Bara ett förslag när det kommer till index på datetime i msql är att indexfotavtrycket påverkar söktider (Ja det verkar självklart...men läs vidare).
Vikten av detta vid indexering på datetime säger till exempel '2015-06-05 22:47:20.102' indexet måste ta hänsyn till varje plats inom datetime. Detta blir mycket stort rumsligt och skrymmande. Ett framgångsrikt tillvägagångssätt som jag har utnyttjat är att skapa en ny datetime-kolumn och fylla i data genom att avrunda tiden till timmen och sedan bygga indexet på denna nya kolumn. Exempel "2015-06-05 22:47:20.102" översätts till "2015-06-05 22:00:00.000". Genom att använda detta tillvägagångssätt lämnar vi den detaljerade informationen ifred och kan visa den eller använda den genom att söka i den här nya kolumnen som ger oss ungefär 10x (minst) avkastning på hur snabbt resultat returneras. Detta beror på att indexet inte behöver ta hänsyn till fälten för minuter, sekunder och millisekunder.