2012-02-21 8 views
5

Mam bardzo dużą tabelę zawierającą około 20 milionów wierszy. Muszę pobrać około 4 miliony wierszy z tej tabeli na podstawie niektórych kryteriów filtrowania. Wszystkie kolumny w kryteriach filtrowania są objęte jakimś indeksem, a statystyki tabel są aktualne.Optymalny rozmiar wiersza do pobrania z dużego stołu

Zasugerowano mi, że zamiast ładować wszystkie wiersze za jednym razem, należy użyć wielkości partii, np. powiedzmy 80000 wierszy na raz, a to będzie szybsze w porównaniu do ładowania wszystkich wierszy na raz.

Czy możesz zasugerować, czy ten pomysł ma sens?

Jeśli ma sens, jaki będzie optymalny rozmiar rzędu do załadowania na raz.

+0

Co chcesz zrobić z wybranych wierszy? –

+0

Muszę załadować te wiersze db do pamięci i zachować trochę pamięci podręcznej rodzaju rzeczy – ManojGumber

+0

Cóż, poza użyciem klauzuli 'order by' (która może mieć znaczący wpływ na wydajność zapytania), nie jestem na pewno będziesz w stanie zagwarantować, że wiersz nie pojawi się w więcej niż jednej partii. –

Odpowiedz

1
  1. Może być znacznie szybszy niż pojedynczy sql.
  2. Dane podzielone przy użyciu PK.
  3. Wielkość partii. To zależy od długości linii i czasu przetwarzania. Zacznij od 10 000.
  4. Zadaj wątek, jeśli to możliwe.
0

Użyj SSIS do manipulowania danymi ... robi wszystko, czego potrzebujesz, jak gwintowanie i optymalizacje rozmiaru i pamięci podręcznej.

rozpędzają kostka lub zajrzeć do danych Narzędzia Business Intelligence Warehouse ...