Optimisation en utilisant les index
Bonjour,
J'utilise les trois tables suivantes dans ma base de données Oracle 10G.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| create table USER
(
USER_ID NUMBER(10) not null,
FIRST_NAME VARCHAR(50),
LAST_NAME VARCHAR(50),
primary key (USER_ID)
);
create table TASK
(
TASK_ID NUMBER(10) not null,
TASK_NAME VARCHAR(50),
primary key (TASK_ID)
);
create table TASK_USER
(
USER_ID NUMBER(10),
TASK_ID NUMBER(10),
EXPIRY_DATE DATE
); |
Un utilisateur peut effectuer plusieurs taches. Une tache peut être réalisées par plusieurs utilisateurs. Je souhaite optimiser la requête qui renvoie les taches d'un utilisateur donné.
Il y a actuellement un 1 million de lignes dans la table TASK, 100 mille ligne dans la table USER, et 1,2 million de ligne dans la table TASK_USER.
Lorsqu'un utilisateur n'est plus affecté à une tache donnée, au lieu de supprimer physiquement la ligne, je remplis une date de suppression, d'où la colonne EXPIRY_DATE.
Ma requête est la suivante
Code:
select TASK_ID, TASK_NAME from TASK_USER, TASK where TASK_USER.USER_ID = ? and TASK_USER.EXPIRY_DATE is null and TASK_USER.TASK_ID = TASK.TASK_ID;
Quels index dois-je créer pour optimiser ma requête ?
Merci pour votre aide