J'ai une question à propos du temps d'execution d'un requete SQL.
Voici une description en simplifié de ma table ( TH_CODE_TABLES ) sur la quelle je fais mon select.
Cette table à la clé Primaire mise sur 2 champs (CODE_TABLE_NAME, CODE) --> PK_TH_CODE_TABLES
Voici mon select :
Select
DESC_FR,
DESC_NL
From TH_CODE_TABLES
Where
CODE_TABLE_NAME = 'ZZ079' And
CODE = '08'
Normallement, la requete doit se faire en utilisant l'index et donc très rapidement. Mais j'ai remarqué que souvent avec de petites tables, un full select est réailisé au lieu d'utiliser l'index. Ce qui me fait environ 2 à 3 seconde alors que si il utilise l'index il le fait instantanément.
C'est très génant car ce select est éxecuter 5 fois dans un autre select qui lui contient environ 600000 records... Faite le compte, quand je suis arrivé au travail ce matin ca tournait toujours d'hier.
Maintenant nous avons trouvé la parade en rajoutant un HINT à la requete qui va forcer l'utilisation de l'index :
Select /*--+ INDEX(TH_CODE_TABLES PK_TH_CODE_TABLES) */
DESC_FR,
DESC_NL
From TH_CODE_TABLES
Where
CODE_TABLE_NAME = 'ZZ079' And
CODE = '08'
Et la donc je n'ai plus de problèmes... Mais ceci dit j'aimerais savoir pourquoi des fois il utilise l'index ( --> Logique ) alors que d'autre fois ( et souvent avec de petites tables) il fauit un full analyzed et me sort donc le resultat beaucoup trop lentement.
SQL - Restrictions Une restriction consiste à sélectionner les lignes satisfaisant à une condition logique effectuée sur leurs attributs. En SQL, les restrictions s'expriment à l'aide de la clause WHERE suivie d'une condition logique exprimée à l'aide d'opérateurs...www.commentcamarche.net/sql/sqlrestr.php3
SQL - Création de table Le SQL, comportant un langage de définition de données (LDD), permet de créer des tables. Pour cela, il utilise le couple de mots clés CREATE TABLE. Le création de tables se fait à l'aide du couple de mots-clés CREATE TABLE. La syntaxe de définition...www.commentcamarche.net/sql/sqlcreate.php3
SQL - Tri et regroupement Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou décroissante. Le classement se...www.commentcamarche.net/sql/sqltri.php3