Salut,
hier j'ai mis le server de la boite a genoux en remplacant un
par:
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Table WHERE (Truc='A' or Truc='B') AND Machin='C' AND BIDULE='D'
La requete toute simple extrait entre 10 et 1.000 ligne sur 300.000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Table WHERE Truc IN('A','B') AND Machin NOT IN('A','B') AND BIDULE='D'
Des qu'on lancait 3 requetes rapprochées le proc bloquait plusieurs secondes à 100%.
Apres plusieurs heures de test j'ai réussi à réduire la charge du proc de 500% (et sauver la vie du PIII 400 !) en faisant une vue avec:
Le gain des >= par rapport au IN est trés important, le fait de faire une vue semble aussi faire gagner en performance et permet surtout de tester plusieurs solutions sans changer le client chez tout le monde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT * FROM Table WHERE Truc<='B' AND Machin>'A' AND Bidule='D'
Est ce que quelqu'un sait ou on peut trouver de la doc à ce sujet ?
Est ce qu'il est préférable d'utiliser des vues, est-ce qu'il vaut mieux des requetes imbriquées ou des Tables liées, quelle est la différence de perf entre =, >=, >, IN etc...
Toutes les docs se contentent de dire que le moteur SQL fait pour le mieux...
Ceci dit il est peut etre impossible de dégager des généralités et c'est peut etre mes oignons de trouver ce qui est le plus rapide ?
Partager