Bonjour,
J'utilise les trois tables suivantes dans ma base de données Oracle 10G.
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é.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 );
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
Quels index dois-je créer pour optimiser ma requête ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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;
Merci pour votre aide
Partager