Blog Home  Home Feed your aggregator (RSS 2.0)  
artiso Blog - Ungünstige Performance bei Contains in LINQtoSQL
Neues rund um's Thema .Net
 
 Wednesday, June 18, 2008

In einem Projekt nutze ich Contains um eine Liste mit IDs zu übergeben, um dann Objekte per LINQtoSQL aus der Datenbank zu lesen. Das klappt wunderbar, solange die Liste mit den IDs nicht zu groß wird. Bei knapp über 1000 IDs hatte ich allerdings ca. 5 Sek. für die Ausführung was mir dann doch recht lange vorkam. Ich habe mir dann mal mit dem SQL Profiler angeschaut, was LINQ da eigentlich treibt und hatte dann schnell eine Vermutung. LINQtoSQL ruft an der stellen nämlich eine Stored Procedure auf und übergibt die IDs als Parameter dort hin, d.h. über 1000 Parameter deklarieren und zuweisen, das könnte dauern. Ich habe das Statement dann testhalber einfach umgebaut, dass ich im SELECT direkt die IDs über ein IN(...) angab und siehe da, diese Abfrage war nun um Dimensionen schneller.

Merke: Über Contains keine große Anzahl von Parametern übergeben, statt dessen lieber die Abfrage selber mit einem IN aufbauen.

Wednesday, June 18, 2008 4:47:17 PM (Mitteleuropäische Zeit, UTC+01:00)  #    Comments [0]    | 
All comments require the approval of the site owner before being displayed.
Name
E-mail
Home page

Comment (HTML not allowed)  

Enter the code shown (prevents robots):

Copyright © 2008 Thomas. All rights reserved.
DasBlog 'Portal' theme by Johnny Hughes.
Pick a theme: