Juste une suggestion en ce qui concerne les index sur datetime dans msql est que l'empreinte de l'index a un impact sur les temps de recherche (Oui, cela semble évident... mais veuillez lire la suite).
Les importances à cela lors de l'indexation sur la date et l'heure disent par exemple '2015-06-05 22:47:20.102' l'index doit tenir compte de chaque endroit dans la date et l'heure. Celle-ci devient très grande spatialement et encombrante. Une approche réussie que j'ai exploitée consiste à créer une nouvelle colonne datetime et à remplir les données en arrondissant l'heure à l'heure, puis en construisant l'index sur cette nouvelle colonne. Exemple '2015-06-05 22:47:20.102' se traduit par '2015-06-05 22:00:00.000'. En adoptant cette approche, nous laissons les données détaillées seules et pouvons les afficher ou les utiliser par recherche sur cette nouvelle colonne, ce qui nous donne un retour d'environ 10x (au minimum) sur la rapidité avec laquelle les résultats sont renvoyés. Cela est dû au fait que l'index n'a pas à tenir compte des champs minutes, secondes et millisecondes.