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

Warum sollte eine SQLCLR-Prozedur langsamer ausgeführt werden als die gleiche Code-Clientseite?

Der Codetyp, den Sie schreiben, ist sehr anfällig für SQL-Injection. Anstatt den Reader so zu verarbeiten, wie Sie es tun, könnten Sie einfach die RecordsAffected-Eigenschaft verwenden, um die Anzahl der Zeilen im Reader zu ermitteln.

BEARBEITEN:

Nachdem Sie einige Nachforschungen angestellt haben, ist der Unterschied, den Sie sehen, ein beabsichtigter Unterschied zwischen der Kontextverbindung und einer regulären Verbindung. Peter Debetta hat darüber gebloggt und schreibt:

„Die Kontextverbindung ist so geschrieben, dass sie jeweils nur eine Zeile abruft, also hat der Code für jede der 20 Millionen ungeraden Zeilen jede Zeile einzeln abgefragt. Bei Verwendung einer Nicht-Kontextverbindung fordert sie jedoch 8K an Zeilen gleichzeitig."

http://sqlblog.com /blogs/peter_debetta/archive/2006/07/21/context-connection-is-slow.aspx