Bonjour bonjour,

Voila, dans un souci de performance, je me suis intéressé a la création d'index. Voici mes tables:

Table: Item
Colonnes: ID_item, Code_bar1

Table: Alias
Colonnes: ID_alias, Item_id, Code_bar2
(Item_id étant la clé étrangère correspondant a ID_item)

Chaque "produit" possède nécessairement un Code_bar1, mais pas nécessairement un Code_bar2.
Lorsqu'un utilisateur scanne un code bar, je ne sais pas si il s'agit du code bar 1 ou 2, mais sachant que dans 75% des cas il s'agit du code bar1.

Pour l'instant, je n'ai pas d'index, et je fais la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
SELECT i.ID_item, i.Code_bar1, a.Code_bar2 
     FROM Item AS i
          LEFT OUTER JOIN Alias AS a ON i.ID_item=a.Item_id
               WHERE i.Code_bar1=@MaValeur
Si ça ne retourne rien, soit le produit n'existe pas soit l'utilisateur a scanner un Code_bar2, donc je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT i.ID_item, i.Code_bar1, a.Code_bar2 
     FROM Item AS i
          LEFT OUTER JOIN Alias AS a ON i.ID_item=a.Item_id
               WHERE a.Code_bar2=@MaValeur
Mes performance pour le premier cas, sont la plupart du temps de 2 secondes mais parfois peut aller jusqu'à 10 secondes. On m'a donc suggérer de créer des index pour Item.Code_nar1 et Item.Code_bar2.

Mais en cherchant un peu, j'ai appris l'existence des indexation composite. Mon idées serait donc de créer un index du genre:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE NONCLUSTERED INDEX i_recherche ON Item(Code_bar1), Alias(Code_bar2)
- Cela marcherait il ?

Et du coup je ne ferai plus qu'une requête:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SELECT i.ID_item, i.Code_bar1, a.Code_bar2 
     FROM Item AS i
          LEFT OUTER JOIN Alias AS a ON i.ID_item=a.Item_id
               WHERE i.Code_bar1=@MaValeur OR a.Code_bar2=@MaValeur
-Cela améliorerait il la performance de ma recherche ?

Merci d'avance pour toute suggestion ou commentaire.