Erstellen eines index für eine Tabelle variable

Können Sie erstellen eine index auf eine table-variable in SQL Server 2000?

d.h.

DECLARE @TEMPTABLE TABLE (
        [ID] [int] NOT NULL PRIMARY KEY
        ,[Name] [nvarchar] (255) COLLATE DATABASE_DEFAULT NULL 
)

Kann ich erstellen Sie einen index auf Name?

Es ist eine kostengünstige erstellen beide Arten von temporären Tabellen; und wenn Sie so viele Daten, dass Sie, müssen Sie einen index wäre es an der Zeit zu schauen, mit einem echten Tisch ist; dass Sie, um die Transaktion sicher; filter durch spid oder Benutzer-id ein und deaktivieren Sie es unten am Ende. Echte Tabellen v temp-Tabellen, beide haben Ihre Höhen und tiefen, aber wenn die Leistung ist ein Problem, versuchen Sie es mit einem echten Tisch zu.
Eine temp-Tabelle 'IST' eine echte Tabelle, Sie geht einfach Weg, wenn Sie fertig sind. Der wirkliche Unterschied (außer es geht automatisch entfernt) ist, dass es in TempDB. Dies ist tatsächlich enorm, wenn es um die Indizes und Einschränkungen, weil Sie könnte Ende-up mit dem Namen Auseinandersetzungen, nicht nur mit anderen Ausführungen des Codes aber mit der code-Ausführung in anderen Datenbanken in der Instanz.
dies ist eine table-variable nicht in eine temp-Tabelle. Tabelle Variablen, die nicht erlauben, explizit benannte Einschränkungen, die vom system generierten Namen garantiert eindeutig sein. Sie gestatten die genannten Indizes aus 2014 das ist aber kein problem, da nur Indizes müssen mit einem eindeutigen Namen innerhalb eines Objekts nicht über Objekte.
Mein Punkt war 2 Falten. 1) für Andere als die Verwendung einer Variablen zu vermeiden, die Transaktion Verschränkung es ist kein wesentlicher Unterschied zwischen einer temp-Tabelle und die Tabelle variable. In V-2000 jedoch gibt es keine syntax für das hinzufügen von constraints, Indizes... auf eine variable. 2) Gegeben, kann man mithilfe einer temp-Tabelle statt, genannt Tisch Hautanhangsgebilde wie Indizes WIRD clash mit der gleichzeitigen Ausführung von Kopien der gleichen SP, wenn einen statischen Namen verwendet! Der Mechanismus unten wurde entwickelt, ausdrücklich, weil ich verfolgt SP-Ausfälle zu benannten Indizes aufeinander, während diese genauen Umstände. Sie MÜSSEN einzigartig sein.
Keine index Namen müssen nicht eindeutig sein, zwischen Objekten - nur constraint-names zu tun. dies ist trivial zu testen. Führen Sie einfach CREATE TABLE #T1(X INT); CREATE TABLE #T2(X INT); CREATE INDEX IX ON #T1(X); CREATE INDEX IX ON #T2(X);

InformationsquelleAutor GordyII | 2009-05-20

Schreibe einen Kommentar