2016-07-01 13 views
0

Ich benutze Oracle 11g. Ich habe einen Tisch mit Hunderttausenden von Datensätzen.wo Index für große Tabelle erstellen?

Meine Suche:

Select a1,a2,..... n 
from tbl 
where a1=val1 and a2=val2 and a3=val3 and a4=val4 and a5=val5 

Um die Abfrageleistung in zu verbessern, wo Bedingung für die Spalte I Index erstellen haben?

+0

Normalisierungs könnte auch erforderlich sein. Warum verwendet Ihr Tisch horizontal 5 verschiedene Spalten? Wie macht das Sinn, auch in 2NF-Form? Ist das ein Fakttabelle? –

+0

@clifton Wirklich ist es eine Interviewfrage – Hrithu

+0

Tatsächlich gibt es viele Weisen, Problem und viele versteckte Wanzen und Geheimnisse zu lösen. Die beste Antwort "Es kommt darauf an". Sie können für jede Spalte einen separaten Index erstellen oder als Punkt @scaisEdge "für die Spalten (a1, a2, a3, a4, a5)" Sie können auch Partitionen erstellen, Tabellen neu erstellen und so weiter. Sie sagen uns, dass es eine Interviewfrage ist, dann sollten Sie so viele Varianten wie möglich anbieten. –

Antwort

1

Die beste Leistung erhalten, wenn Sie immer auf dem Spalte in denen .. und möglicherweise auch auf der Spalte in ausgewähltem so den Index beteiligt beteiligt erstellen und Index .. wird auch verwendet, um den Wert pro retrive ..

in Ihrem Fall auf der Säule ..

(a1, a2, a3, a4, a5) 

für die Filterleistung ..und possibile auf andere Spalte für das vermeiden der Zugriff auf Datentabelle für retrive Informationen

können Sie haben einige Tipps hier https://docs.oracle.com/cd/B12037_01/appdev.101/b10795/adfns_in.htm

https://dev.mysql.com/doc/refman/5.5/en/optimization-indexes.html

Remenber, dass das Tuning DB Produkt ist im Zusammenhang ..

Verwandte Themen