Jak wyświetlić liczbę wierszy każdej tabeli w bazie danych. Jakiś odpowiednik
select count(*) from table1
select count(*) from table2
...
select count(*) from tableN
Zamieszczę rozwiązanie, ale inne podejścia są mile widziane
sql-server
database
kristof
źródło
źródło
dtProperties
i tak dalej; ponieważ są to tabele „systemowe”, nie chcę o nich raportować.Fragment, który znalazłem na stronie http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=21021, który pomógł mi:
źródło
JOIN
from sysobjects t inner join sysindexes i on i.id = t.id and i.indid in (0,1) where t.xtype = 'U'
Aby uzyskać te informacje w SQL Management Studio, kliknij prawym przyciskiem myszy bazę danych, a następnie wybierz Raporty -> Raporty standardowe -> Wykorzystanie dysku według tabeli.
źródło
źródło
Jak widać tutaj, zwróci to poprawne zliczenia, a metody wykorzystujące tabele metadanych zwrócą tylko szacunki.
źródło
Wynik:
źródło
Na szczęście studio zarządzania SQL Server daje podpowiedź, jak to zrobić. Zrób to,
Zatrzymaj śledzenie i zobacz, co TSQL generuje Microsoft.
W prawdopodobnie ostatnim zapytaniu zobaczysz instrukcję zaczynającą się od
exec sp_executesql N'SELECT
po skopiowaniu wykonanego kodu do Visual Studio zauważysz, że ten kod generuje wszystkie dane, które inżynierowie z Microsoft zastosowali do wypełnienia okna właściwości.
kiedy wprowadzisz umiarkowane zmiany do tego zapytania, przejdziesz do czegoś takiego:
Teraz zapytanie nie jest idealne i możesz je zaktualizować, aby spełniało inne Twoje pytania, chodzi o to, że możesz skorzystać z wiedzy o Microsoft, aby uzyskać dostęp do większości pytań, wykonując dane, które Cię interesują, i śledź TSQL wygenerowany przy użyciu profilera.
Lubię myśleć, że inżynierowie MS wiedzą, jak działa serwer SQL, i wygeneruje TSQL, który działa na wszystkich elementach, z którymi możesz pracować przy użyciu wersji na SSMS, której używasz, więc jest całkiem dobry w wielu wersjach wcześniejszych, bieżących i przyszłość.
I pamiętaj, nie kopiuj, staraj się to zrozumieć, bo w przeciwnym razie możesz skończyć z niewłaściwym rozwiązaniem.
Walter
źródło
Podejście to wykorzystuje konkatenację łańcuchów, aby dynamicznie wygenerować instrukcję ze wszystkimi tabelami i ich liczbą, podobnie jak w przykładach podanych w pierwotnym pytaniu:
Na koniec jest to wykonywane za pomocą
EXEC
:źródło
Najszybszy sposób na znalezienie liczby wierszy wszystkich tabel w SQL Refreence ( http://www.codeproject.com/Tips/811017/Fastest-way-to-find-row-count-of-all-tables-in-SQL )
źródło
Pierwszą rzeczą, jaka przyszła mi do głowy, było użycie sp_msForEachTable
która nie zawiera nazw tabel, więc można ją rozszerzyć na
Problem polega na tym, że jeśli baza danych ma więcej niż 100 tabel, pojawi się następujący komunikat o błędzie:
Skończyło się na tym, że użyłem zmiennej tabeli do przechowywania wyników
źródło
Odpowiedź Zaakceptowany nie działa dla mnie na SQL Azure, tutaj jest jeden , że nie, że to super szybki i zrobił dokładnie to, co chciałem:
źródło
Ten skrypt sql podaje schemat, nazwę tabeli i liczbę wierszy każdej tabeli w wybranej bazie danych:
Patrz: https://blog.sqlauthority.com/2017/05/24/sql-server-find-row-count-every-table-database-efficiently/
Kolejny sposób to zrobić:
źródło
Myślę, że najkrótszym, najszybszym i najprostszym sposobem byłoby:
źródło
Możesz spróbować:
źródło
źródło
Z tego pytania: /dba/114958/list-all-tables-from-all-user-databases/230411#230411
Dodałem liczbę rekordów do odpowiedzi udzielonej przez @Aaron Bertrand, która zawiera listę wszystkich baz danych i wszystkich tabel.
źródło
Możesz skopiować, wkleić i wykonać ten fragment kodu, aby uzyskać wszystkie liczby rekordów tabeli do tabeli. Uwaga: Kod jest komentowany instrukcjami
Przetestowałem ten kod i działa dobrze na SQL Server 2014.
źródło
Chcę podzielić się tym, co dla mnie działa
Baza danych jest hostowana na platformie Azure, a końcowy wynik to:
Źródło: https://www.mssqltips.com/sqlservertip/2537/sql-server-row-count-for-all-tables-in-a-database/
źródło
Jeśli używasz MySQL> 4.x, możesz użyć tego:
Należy pamiętać, że w przypadku niektórych silników pamięci masowej TABLE_ROWS jest przybliżeniem.
źródło
Tutaj
indid=1
oznacza wskaźnik klastrowych iindid=0
jest kupaźródło