2016-10-28 2 views
-1

Hier ist meine Frage:Wie verbessert man die Auswahl Abfrage Leistung in oracle.but Where-Klausel mit NVL-Funktion?

select col1, col2, col3 
from table_name 
where nvl(cola, 1)=nvl(cola,1) 

Es gibt einen regelmäßigen Index auf cola. Wie kann ich die Leistung verbessern, ohne den Index zu ändern?

+0

Es gibt keine Möglichkeit, einen regulären Index für nur 'Cola' zu verwenden. Sie benötigen einen funktionsbasierten Index: 'create index on Tabellenname (nvl (cola, 1))' –

+1

Die gepostete Abfrage wird auf 'where 1 = 1' reduziert, was immer wahr ist, was zu einem vollständigen Tabellenscan führt. Während wir unser Problem bei der Veröffentlichung auf SO vereinfachen müssen, sollten wir nicht zu vereinfachen. – APC

+0

thanks.but bereits Cola mit normalem Index muss nicht extra Index hinzufügen. Gibt es einen Hinweis auf Leistung in nvl()? – swamy

Antwort

0

Sie sollten erstellen Funktion basierende Index wie folgt aus:

create index on table_name(nvl(cola,1)) 
0

Sie können versuchen, einen Index für NVL (Cola, 1) hinzuzufügen.

Verwandte Themen