Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Ist die Überprüfung des Primärschlüsselwerts vor dem Einfügen schneller als die Verwendung von try-catch?

Auf SQL 2008 können Sie einfach MERGE verwenden - viel einfacher als jeder Ihrer Ansätze.

Auch bei "Ich möchte aus Leistungsgründen KEINE Transaktionen verwenden" bin ich nicht bei Ihnen - jeder DML-Befehl, den Sie ausführen, ist ohnehin Teil einer Transaktion, daher gibt es Transaktionen, auch wenn Sie sie nicht explizit öffnen. Wenn Sie Leistungsprobleme haben, können Sie weitere Details posten, damit Sie mehr Hilfe bei der Leistung erhalten.

Bearbeiten:Wenn Sie wirklich schnelle Einfügungen benötigen, fügen Sie nicht jeweils eine Zeile ein. Fügen Sie Sätze von Zeilen hinzu und verwenden Sie MERGE - der Vorteil, den Sie durch das Einfügen von Stapeln von Zeilen auf einmal erhalten, sollte alle geringfügigen Verbesserungen, die Sie durch die Optimierung der Geschwindigkeit beim Hinzufügen einer Zeile erzielen, bei weitem überwiegen.

Wie auch immer, theoretisches Denken über alles, was mit Datenbanken zu tun hat, ist normalerweise nicht gut genug. Sie müssen wirklich Benchmarks durchführen, um festzustellen, was schneller ist. Was Sie "unnötig nach einer vorhandenen Leitung abfragen" nennen, kann völlig vernachlässigbar sein, und Sie wissen nicht, ob dies der Fall ist, bis Sie es unter realistischen Bedingungen gemessen haben.