Version complète: sur le forum Webmaster Hub : Optimisation de requétes avec LIKE
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
flo001
Bonsoir à tous,

Me voila encore embêté avec ma bdd, j'ai un gros script qui compile beaucoup de stats toutes les nuits, quand je dis beaucoup c'est un script qui pourrait tourner une 1h sans s'arréter si je ne le partitionnais pas en petits morceaux.

Je suis donc très étonné de la longueur d'execution de ce script car ce sont juste des enchainements de SELECT assez simples avec quelques jointures, la seule chose qui peut poser problème à mon avis est l'utilisation de beaucoup de LIKE.

J'utilise ces LIKE afin de sélectionner les enregistrement par journée, j'ai dans mes tables pour chaques enregistrements des DATETIME donc du style 2008-09-16 16:05:00, pour sélectionner les données que je veux pour la journée du 16-09 j'utilise un date_stat LIKE "2008-09-16%", cela sur des tables de plusieurs centaines de milliers d'enregistrements.

Je suppose donc que c'est cela qui prend beaucoup de temps, si vous avez une autre syntaxe pour ce genre de requéte qui permet d'éviter l'utilisation des LIKE ca serait top =)

Merci,
Florent
Dudu
Salut

Tu devrais pouvoir t'en sortir en malmenant moins ta base grâce aux fonctions d'extraction de dates de MySQL (si ton SGBD est MySQL, tu n'as pas précisé):
YEAR(), MONTH(), et DAYOFMONTH().

MySQL / Calcul sur les dates
Kioob
Hello,

convertir les dates en chaine pour pouvoir les sélectionner à coup de "like", c'est assez original je trouve, mais ça limite sûrement l'utilisation des indexes.

Je tenterais plutôt au choix :
CODE
where date( tonChampDateTime ) = '2008-09-16'

ou :
CODE
where tonChampDateTime >= '2008-09-16' and tonChampDateTime < '2008-09-16' + interval 1 day


Je ne sais pas dans quel situation MySQL utilise mieux les index... la première solution étant certainement plus proche.

Dans tous les cas tester ces requêtes à coup d'EXPLAIN sera toujours utile.
flo001
Merci pour vos réponses intéressantes, je m'en vais tester ca tout de suite!
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.