Bonjour,
Je fais appel à vous car nous rencontrons un problème actuellement avec une de nos requêtes que voici :
table1 compte 3 millions de tuples, table2 450 000.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT * FROM table1, table2 WHERE (table1.ID = table2.ID) AND (( (UPPER (table1.NAME) LIKE UPPER ('%toto%')) OR (UPPER (table1.sname) LIKE UPPER ('%toto%')) OR (UPPER (table1.notes) LIKE UPPER ('%toto%')) OR (UPPER (table2.champ1) LIKE UPPER ('%toto%')) OR (UPPER (table2.champ2) LIKE UPPER ('%toto%')) ) )
Le problème de cette requête est qu'elle est de plus en plus utilisée, qu'elle dure plus de 5 mn (encore plus longue depuis passage sous Oracle 10g), et que ça devient carrément insupportable dès que 2 utilisateurs la font simultanément !!
Comment peut-on "bien" écrire ce type de requête ? (je sais que les LIKE et les OR, au niveau optimisation...).
Merci pour votre aide![]()
Partager