2010-07-07 11 views
8

In SQL, wenn ich einen Datenbankindex erstellen, ich bin der Index einen Namen geben erforderlich, wie inWie lautet der SQL-Indexname?

CREATE INDEX timestamp_index ON hit (timestamp); 

Das einzige Mal, dass dieser Name, wenn ich den Index entfernen möchten, notwendig ist, zu sein scheint mit

DROP INDEX timestamp_index; 

Gibt es eine andere Verwendung des Indexnamens?

+0

Sie würden nicht einmal den Indexnamen benötigen, um den Index zu löschen, wie Sie es könnten (wenn die Datenbank die Syntax unterstützt): DROP INDEX hit (timestamp); – Eduardo

+0

Diese Frage ist ähnlich wie meine Frage: http://StackOverflow.com/Questions/3356391/Why-Most-SQL-Databases-allow-Defining-the-Same-Index-twice – Eduardo

Antwort

1

Wie sonst würden Sie den Index identifizieren?

Es ist wahrscheinlich auch Logging angehängt.

+0

Wie sonst würden Sie den Index für was identifizieren Zweck? Wenn es nur intern von der Datenbank-Engine verwendet wird, muss ich ihm keinen Namen geben. –

+1

Ändern, Löschen, Messen der Effizienz –

+0

Ich wurde abgelehnt, weil ich dasselbe gesagt habe wie alle anderen auch? –

6

Manchmal ist es notwendig, Indexhinweis zu machen, wobei Sie der Abfrage-Engine mitteilen, welchen Index sie verwenden soll. Wenn Ihre Indizes keinen Namen haben, können Sie dies nicht tun.

1

Es ist auch hilfreich, wenn die Ausführung Pläne sehen/Überprüfung (zumindest in SQL Server), da die verwendeten Indizes mit Namen angezeigt werden.

12

Hier sind ein paar Dinge denken:

Wie würden Sie den Index neu erstellen?

Wie würden Sie den Index defragmentieren/reorganisieren?

Wie würden Sie den Index ändern?

Wie würden Sie den Index betrachten, um zu sehen, welche Spalten drin sind?

Wenn Sie einen Ausführungsplan anzeigen, wie würden Sie wissen, welcher Index verwendet wurde?

Wie würden Sie den Index deaktivieren, wenn Sie BULK INSERT/BCP ausführen?

Wie würden Sie die sys.dm_db_missing_index_details DMV verwenden, wenn Sie den Namen nicht kennen?

BTW, wenn Sie ein primary key ein clustered index erstellen wird standardmäßig erstellt werden, wird SQL Server geben Sie einen Namen für Sie

create table bla (id int primary key) 
go 

select * from sys.sysobjects s 
join sys.sysobjects s2 on s.parent_obj = s2.id 
where s2.name = 'bla' 

Hier ist der Name, der für diesen Index PK__bla__3213E83F66603565

+0

Ich benutze SQLite gerade jetzt, wenn das Interesse hat. –

0

erzeugt wurde Ich denke oft genauso über Dateinamen. Muss ein MP3-Dateiname Metadaten enthalten (Künstler, Album, ist kein Podcast usw.), wenn die Attribute der Datei eine bessere Arbeit leisten? Die Dateien auf meinem iPod ähneln nicht den entsprechenden Dateinamen auf meiner Festplatte, weil es einen Index verwendet und ich war nicht verpflichtet, einen Namen für , dass index!

Im Gegensatz zu einem Datenelementnamen ist der Name eines Index beliebig. Der ideale Index ist einer, der vom System geschaffen und für immer mehr "gepflegt" wird, wie es das System am besten kennt. Leider ist die Realität, dass Sie in seltenen Fällen etwas tun müssen (z. B. fallen lassen!). Sie könnten auf ein Systemwörterbuch verweisen, um den Index basierend auf seinen Attributen zu identifizieren, normalerweise nur die Spalten, die er umfasst.

Verwandte Themen