Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wydajność zwraca rekordy bazy danych przy użyciu LinqToSql?

W przypadku wykonywania podstawowego zapytania może działaj w ten sposób (oczywiście jest to możliwe) - jednak w przypadku odpytywania nagiego Table<T> , to może czy to wszystko najpierw buforuje; możesz spróbować zapytać o liczbę podczas iteracji lub uruchomić śledzenie. W tym przypadku podejrzewam najpierw będzie buforować.

Ponowne zamknięcie:to też zależy;p Jeśli ktoś używa foreach , to tak:od foreach jawnie usuwa iterator poprzez finally . Jednakże! Nie jest to gwarantowane, jeśli ktoś to zrobi, na przykład (bardzo niegrzeczny i niedbały):

var iter = yourData.GetEnumerator();
if(iter.MoveNext()) {
    Console.WriteLine(iter.Current.Name); // first record of, say, 20
}
// and don't dispose the iterator == bad

to ponieważ iterator nie:a:zostaje usunięty, b:sam się wyczerpuje i c:nie ulega awarii, nie zostanie poprawnie zamknięty (dowolny z tych 3 warunków będzie zamknij go prawidłowo). Podkreślenie:jest to przypadek patologiczny:zwykle można rozsądnie powiedzieć „zamknie się, tak”.

Jeśli chcesz gwarantować brak buforowania, pamiętaj, że "dapper" ma to, jeśli ustawisz buffered na false :

IEnumerable<Customer> customers = connection.Query<Customer>(
       "select * from Customer", buffered: false);

(może również obsługiwać parametry itp.)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Niebezpieczeństwo używania „IF EXISTS... UPDATE .. ELSE .. INSERT” i jaka jest alternatywa?

  2. Jak uzyskać liczbę zduplikowanych wierszy kolumny DISTINCT jako innej kolumny?

  3. Usunąć klucz obcy bez znajomości nazwy ograniczenia?

  4. Różnica czasu wykonania procedury składowanej SQL

  5. Czy istnieje szybki sposób sprawdzenia, czy ANY kolumna ma wartość NULL?