Bonjour à tous,
Je vais prendre un exemple concret pour baser sur une commande d'articles :
Table COMMANDES :
colonne id.
Table Articles
colonne id
colonne id_commande
colonne code_article
colonne nombre
Quelle est la requête la "plus" optimisée) (car mes tables contiendront plusieurs millions de lignes) afin de faire la recherche suivante :
Je veux toutes les commandes qui ont les articles :
(code_article="A" et nombre=1) ET
(code_article="B" et nombre=2)
... (je peux avoir une infinité d'articles)
J'avais pensé à un truc du style
1 2 3 4
| select * from commande where id in (
select id_commande from article where code_article="A" and nombre=1
intersect
select id_commande from article where code_article="B" and nombre=1') |
Mon soucis, c'est que après quelques lectures sur le net, j'ai vu que le "intersect" n'était pas très performant et qu'il vaut mieux utiliser un "intersect all", mais cela pose des soucis dans le cas de doublon.
Avez vous une autre solution plus performante ?
Pour info la base utilisée est Postgres
Je vous remercie
Partager