| 

.NET C# Java Javascript Exception

2
Hallo zusammen,
kennt jemand den Grund, warum die Verbindungsoption ARITHABORT beim Zugriff auf eine Tablevaluedfunction Auswirkungen auf die Performance zeigt, wenn ich allerdings den Code der TVF direkt ausführe (mit selben Parametern) sich keinerlei Unterschiede zeigen?

Beim ausführen von
SET ARITHABORT OFF
SELECT * FROM myTVF(@P1,@P2)


braucht die Abfrage drei Sekunden.

Die Abfrage:
SET ARITHABORT ON
SELECT * FROM myTVF(@P1,@P2)

zeigt das Ergebnis instant

Führe ich den Code der TVF direkt aus, spielt die Einstellung keine Rolle. Das Ergebnis ist immer Instant da...

DECLARE @P1 int, @P2 int

DECLARE @ReturnTable AS Table
(
Value1 int
,Value2 int
)
INSERT @ReturnTable
SELECT .......


Die Executionplans sind im jeweiligen Beispiel immer identisch...
19.04.2013
Sweatdiver 126 1 6
1 Antwort
2
Auf der Microsoftseite habe ich folgenden Hinweis gefunden:

Sie sollten ARITHABORT in Anmeldesitzungen immer auf ON festlegen. Wenn ARITHABORT auf OFF festgelegt wird, kann dies negative Auswirkungen auf die Abfrageoptimierung haben und zu Leistungsproblemen führen.

Weshalb möchten Sie den Schalter auf OFF setzen? Im Allgemeinen gibt es dafür keinen Grund. Arithmetische Überläufe bei Abfragen sollten anderweitig behandelt werden.
19.04.2013
edvservice 1,4k 1 6
Danke schonmal. Unsere Applikation (FoxPro) verbindet sich per ODBC mit der Datenbank und setzt diese Verbindungsoption automatisch bzw. wir ändern an den Optionen nach dem Verbindungsaufbau nichts. Ich werde mich dann wohl noch mal mit den ODBC-Einstellungen auseinandersetzen.
Sweatdiver 19.04.2013

Stelle deine Mssql-Frage jetzt!