2010-08-05 4 views
5

Przepraszam za to, co może być głupim pytaniem.Czy indeksowanie tabeli SQL poprawi wydajność instrukcji LINQ?

Jestem zaintrygowany, że (a) indeksowanie poprawi wydajność (b) w jaki sposób poprawi wydajność i (c) dlaczego poprawi wydajność?

Ponadto, jeśli to ma zwiększyć wydajność, byłaby to sprawa całej planszy dla LINQ to SQL, LINQ do podmiotów LINQ to Objects, itp, itd.

Ponownie, jeśli jest to naprawdę głupie pytanie , Przepraszam.

Odpowiedz

4

Poprawi to wydajność, jeśli i tylko jeśli zapytanie LINQ spowoduje wykonanie instrukcji SQL, która może korzystać z indeksu - ponieważ przy korzystaniu z Linq-To-Sql zapytanie LINQ jest tłumaczone na Instrukcja SQL (stąd nazwa).

Na przykład następujące zapytanie z pewnością skorzystałoby z indeksu w kolumnie LastName w tabeli Customers.

var results = from c in db.Customers 
    where c.LastName == 'Smith' 
    select c; 
+0

LINQ to Entities ... mała poprawa wydajności? –

+0

Jeśli twoim zapleczem jest baza danych, to tak - indeksowanie może pomóc zwiększyć wydajność. –

+0

Doskonały - dzięki Winston. –

0

Może to poprawić wydajność, jeśli indeksowanie jest prawidłowe. LINQ po prostu generuje instrukcje SQL za kulisami ... jeśli instrukcja używa indeksu, to poprawi wydajność ... jeśli nie, to nie będzie.

1

Jak wszystko SQL - to zależy.

Jeśli masz mały stolik to naprawdę nie ma znaczenia (dzisiejsza wartość dla "małych" to < 3000 wierszy).

Jeśli zapytanie ma zwrócić więcej niż 30% wierszy w tabeli, prawdopodobnie będzie szybsze bez indeksu.

Jednak jeśli chcesz wybrać jeden lub dwa konkretne wiersze z dużej tabeli, to indeksowanie niektórych kolumn używanych w instrukcji where (argumenty wyszukiwania, które przekazujesz do LINQ) znacznie przyspieszą sprawę.

Również jeśli często łączysz tabele niż predykaty łączenia (kolumny używane w instrukcji "ON" dla dołączonego do tabeli) powinny być indeksowane. Może to skrócić czas odpowiedzi na niektóre zapytania z godzin do sekund.

0

LINQ do SQL generuje instrukcję SQL, można zobaczyć tę instrukcję w różnych narzędziach, takich jak Linq pad. Kiedy zapytanie zostanie uruchomione w SQL Server, indeksy zdecydowanie poprawią wydajność.

  • indeksowanie poprawi wydajność - Tak.
  • jak poprawi to wydajność - Przeczytaj o indeksach.
  • dlaczego poprawi wydajność?- I naprawdę nie mam odpowiedzi na to pytanie.

Ponadto, jeśli to ma poprawić wydajności, byłby to przypadek całej planszy dla LINQ to SQL, LINQ podmiotom, LINQ to Objects, itp, itd

Odpowiedz na to, jaka jest relacja tabeli SQL z obiektem?