Bonjour,
Nous avons une table contenant aujourd'hui 10 Millions de lignes.
Cette table grossit d'environs 2 Millions de lignes par mois.
Voici la structure de ma table :
Nous avons un écran de recherche permettant de requêter cette table.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Name Type ----------------------------- -------- ------------------- TABLE_ID NUMBER(10) TABLE_DATE DATE COLUMN_A VARCHAR2(100) COLUMN_B VARCHAR2(100) COLUMN_C VARCHAR2(10) COLUMN_D VARCHAR2(30) COLUMN_E VARCHAR2(50) COLUMN_F VARCHAR2(30) COLUMN_G VARCHAR2(50) COLUMN_H VARCHAR2(30) COLUMN_I VARCHAR2(30)
A partir cet écran, nous pouvons faire une recherche sur n'importe quelles colonnes de cette table.
Voici des exemples de requêtes :
Dans l'ensemble, ça marche pas mal, à part une certaine lenteur au niveau des requêtes. Pour info, les requêtes sont générées à partir d'un ORM (Hibernate).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT * FROM MA_TABLE WHERE COLUMN_A = 'valeura' AND COLUMN_B = 'valeurb' AND COLUMN_I IN ('val1', 'val2', 'val3', 'val4'); SELECT * FROM MA_TABLE WHERE COLUMN_B = 'valeurb' AND COLUMN_E IN ('val10', 'val20', 'val30', 'val40'); SELECT * FROM MA_TABLE WHERE TABLE_DATE between '01-DEC-2013' AND '01-JAN-2014' AND COLUMN_A IN ('vala', 'valb', 'valc', 'vald') AND COLUMN_B = 'valeurb' AND COLUMN_I IN ('val1', 'val2', 'val3', 'val4') AND COLUMN_E IN ('val10', 'val20', 'val30', 'val40') ; ...
Nous avons posé des index sur certaines combinaisons pour améliorer le temps d’exécution des requêtes. Mais les requêtes pouvant se faire sur toutes les colonnes indifféremment, nous ne pouvons pas poser des index sur toutes les combinaisons possibles.
Avez vous des idées pour améliorer les temps d’exécutions des requêtes quel que soit la combinaison de colonnes choisies en critères ?
Merci de votre aide.
Partager