Widok systemu sys.partitions
ma kolumnę „wiersze”, czyli całkowitą liczbę wierszy w danej partycji. W przypadku tabeli, która nie jest podzielona na partycje (lub ma tylko jedną partycję, w zależności od tego, jak na nią patrzysz), ta kolumna podaje liczbę wierszy w tabeli.
Jestem ciekawy, jak dokładna jest ta kolumna i czy mogę jej użyć zamiast SELECT COUNT(1) FROM TableName
. Przeprowadziłem kilka eksperymentów, w których utworzyłem tabelę i dodałem kilka tysięcy wierszy, usunąłem kilkaset, dodałem kilka tysięcy więcej itd., A liczenie zawsze było martwe. Mam jednak jedną tabelę z około 700 milionami wierszy i kilkoma indeksami. Wiersz sys.partitions
dla indeksu klastrowanego znów jest martwy, jednak inne indeksy wykazują pewne niewielkie różnice (+ -20 tys.).
Czy ktoś wie, jak ten wiersz jest obliczany i czy jest tak dokładny, jak się wydaje?
źródło
Odpowiedzi:
Books Online stwierdza, że pole wierszy „wskazuje przybliżoną liczbę wierszy na tej partycji”. Spodziewałbym się zatem, że będzie blisko, ale nie w 100% dokładny, w 100% przypadków.
Michael Zilberstein podaje przykład
sys.partitions
bycia bardzo niepoprawnym w „Brak gwoździa” . Nie mówię, że jest to częste zjawisko, ale jest możliwe.sys.dm_db_index_physical_stats
zawierarecord_count
pole, które wydaje się być dokładniejsze, choć należy pamiętać, że uruchomienie DMV może spowodować problem z blokowaniem REDO, jeśli uruchomisz go na instancji, na której znajduje się replika wtórna zawsze czytelna.Wyjaśnienie na
record_count
polu wyświetlane są następujące informacje:Zobacz także odpowiedź Martina Smitha na podobne pytanie dotyczące przepełnienia stosu.
źródło
BOL rzeczywiście mówi dla tej kolumny „wskazuje przybliżoną liczbę wierszy w tej partycji”. A przybliżenie jest bardzo przybliżone. Widziałem już, że na pewnej partycji miałem 1 rekord. sy.partitions.rows wskazywał 4048 wierszy. Po usunięciu tego rekordu nadal wskazywał 4048 wierszy, nawet po przebudowaniu wszystkich indeksów itp. Jednym z wniosków jest to, że jeśli chcesz na nim polegać, nie rób tego.
źródło