Aller au contenu

Optimisation de requétes avec LIKE


Sujets conseillés

Posté

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

Posté

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 :

where date( tonChampDateTime ) = '2008-09-16'

ou :

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.

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...