Frage

Ich habe eine SQL-Datenbank mit einer Reihe von Tabellen, die einzigartigen IDs haben. Für die längste Zeit von meiner C # Schnittstelle in einem guid die eindeutige Kennung Datentyp und vorbei benutze ich habe. Jedoch zum Zweck der Geschwindigkeit bei der Abfrage Ich habe zu wechseln beschlossen, eine bigint und vorbei in einem langen zu verwenden.

Was ist der einfachste Weg, einzigartig sehnt sich jedes Mal, wenn ich den Code ausführen zu schaffen, so dass es keine Duplizierung von ID ist?

War es hilfreich?

Lösung

Die einzige Möglichkeit, garantieren könnte, dass die Bigint innerhalb der Datenbanktabelle eindeutig zuzuordnen sind, ist es SQL Server generieren zu lassen für Sie -. Es eine Identity-Spalte machen

Haben Sie messen tatsächlich Leistung mit Unique und fand es zu langsam?

Andere Tipps

Wenn Geschwindigkeit ein Problem ist, können Sie Abfrage Verbesserungen erhalten, wenn eine Unique mit durch Erzeugen der newsequantialID () -Funktion statt newID () verwenden. Das neue Verfahren erzeugt sequentielle uniqueidentifiers

Wo sehen Sie die Verlangsamung? Abfrage oder Insert / Update? Ich frage, weil GUID als Primärschlüssel nicht groß ist für insert / update, weil sie nicht wie Identität des sequentiellen und können einige Hiebe in dem gruppierten Index eines Schlüssels führen. Aber SQLServer hat sequenziellen guids, dass jetzt, dass lösen. Ich höre viel über die Verwendung von GUID als Schlüssel langsam zu sein, aber ich frage mich, wie viel das wirklich wahr ist. Vor allem auf 64-Bit-Maschinen - vergleicht 128-Bit-Zahlen wirklich so viel langsamer als 64 verglichen oder sogar 32-Bit-Zahlen

Es gibt andere Optionen zur Erzeugung von eindeutigen Nummern neben einen Samen. Eine Möglichkeit ist es, eine Zahl zu erzeugen, basierend auf der Zeit, so etwas wie die Zecken, oder besser berechnet die Anzahl der Sekunden seit Beginn des Jahres 2009. Dann fügen Sie eine eindeutige Ziffer auf dem Standort (oder Konto, wenn Sie nicht auf dem Server zu tun ) wurde die Zahl am Ende der Nummer (die niedrigstwertige Ziffer) erstellt.

Also, wenn Ihr neue eindeutige Nummer erstellt wurde auf App-Server 1 und es ist id 42 war und es hat sich seit Anfang 2009 4.000 Sekunden gewesen, Ihre neue Kennung 400042. Die nächste sein würde erzeugt könnte 400.942 und eine von einem anderen Server erzeugt genau zur gleichen Zeit 400943. sein könnte

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top