Bonjour

J'essaye de faire une requete pas tres compliquée, mais sur 2M de lignes, ce qui fait qu'elle prend beaucoup de temps.

J'ai donc comme requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT   t.code_entrep,
         p.code_qual,
         p.n_num_quantite,
         t.date_mep
    FROM table_stockage t JOIN quantite p ON (t.code_commun = p.code_commun)
   WHERE t.date_mep = (SELECT MAX (date_mep)
                              FROM table_stockage t2
                             WHERE t2.code_entrep = t.code_entrep
                               AND t2.code_produit = t.code_produit)
ORDER BY code_entrep;
J'ai ajouté un index sur ma table table_stockage sur les colonnes code_entrep et code_produit


Et comme plan d'execution j'obtiens

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
------------------------------------------------------------------------------------------
| Id  | Operation                      |  Name                   | Rows  | Bytes | Cost  |
------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT               |                         | 20110 |  1060K|  2084 |
|   1 |  SORT ORDER BY                 |                         | 20110 |  1060K|  2084 |
|   2 |   FILTER                       |                         |       |       |       |
|   3 |    HASH JOIN                   |                         | 20110 |  1060K|  1867 |
|   4 |     TABLE ACCESS FULL          | QUANTITE                    |   629 | 10693 |     2 |
|   5 |     TABLE ACCESS FULL          | TABLE_STOCKAGE      | 19662 |   710K|  1863 |
|   6 |    SORT AGGREGATE              |                         |     1 |    18 |       |
|   7 |     TABLE ACCESS BY INDEX ROWID| TABLE_STOCKAGE      |     1 |    18 |     2 |
|   8 |      INDEX RANGE SCAN          | TABLE_STOCKAGE_IND  |     1 |       |     1 |
------------------------------------------------------------------------------------------

Merci pour votre aide