Ich habe ein paar Stunden mit meiner Frage verbracht und keine zufriedenstellende Antwort erhalten. Ich habe immer noch Zweifel. Ich habe Folgendes über Clustered Index gefunden:
- Die Daten werden in der Reihenfolge des Clustered-Index gespeichert.
- Nur ein Clustered-Index pro Tabelle.
- Wenn ein Primärschlüssel erstellt wird, wird automatisch auch ein Clusterindex erstellt.
Ich habe diese Punkte bekommen, aber meine Fragen sind:
- Ist der Cluster-Index in der Oracle-Datenbank vorhanden, da ich in einigen Blogs gelesen habe: "Oracle hat kein Konzept für einen Cluster-Index."
- Wenn ja, teilen Sie mir bitte die SQL-Anweisung mit, um einen Cluster-Index zu erstellen .
- Wie oben erwähnt, wird der Clusterindex automatisch erstellt, wenn der Primärschlüssel in einer Spalte einer Tabelle definiert wird. Wie kann ich den Indextyp überprüfen, ob er erstellt wurde oder nicht?
Hier finden Sie meine Tabellenarchitektur:
Lassen Sie mich wissen, ob noch etwas erforderlich ist, um Antworten auf diese Fragen zu erhalten.
quelle
ROWID
.Derzeit gibt es keine Möglichkeit, einen Clustered-Index zu erstellen. Es können jedoch einige Funktionen hinzugefügt werden, um nahezu das gleiche Ergebnis zu erzielen: (B-Tree & Bitmap INDX) 1. SCHRITT - Cluster für eine oder mehrere Tabellen erstellen - Referenz, z. B. PK - gemeinsame Spalte 2. SCHRITT - einige Tabellen zum Cluster hinzufügen 3. SCHRITT - CLUSTERED INDEX innerhalb eines CLUSTER erstellen - siehe letzte SQL-Datei (INDEX_TYPE = CLUSTERED CLUSTERING_FACTOR = 1)
quelle
CREATE CLUSTER employee_departments_cluster (department_id NUMBER (4)) GRÖSSE 512;
CREATE TABLE Mitarbeiter (Abteilungs-ID-Nummer (4), Name varchar2 (10), empno int) CLUSTER employee_departments_cluster (Abteilungs-ID);
CREATE TABLE Abteilungen (Abteilung_ID-Nummer (4), dname varchar2 (10), sales int) CLUSTER employee_departments_cluster (Abteilung_id);
CREATE INDEX idx_emp_dept_cluster ON CLUSTER employee_departments_cluster; Werte in Abteilungen einfügen (1, 'd1', 1000); Werte in Mitarbeiter einfügen (1, 'emp123', 123); Werte in Mitarbeiter einfügen (1, 'emp124', 124); Werte in Mitarbeiter einfügen (1, 'emp125', 125);
Wählen Sie INDEX_NAME, INDEX_TYPE, TABLE_NAME, TABLE_TYPE, CLUSTERING_FACTOR aus DBA_INDEXES aus. WHERE INDEX_NAME = UPPER ('idx_emp_dept_cluster');
INDEX_NAME, INDEX_TYPE, TABLE_NAME, TABLE_TYPE, CLUSTERING_FACTOR IDX_EMP_DEPT_CLUSTER, CLUSTER, EMPLOYEES_DEPARTMENTS_CLUSTER, CLUSTER, 1
quelle