powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
12 сообщений из 12, страница 1 из 1
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646559
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую.

Подскажите пожалуйста, как скриптом найти самые большие таблицы в БД?

Обязательно включая кучи, т.е. где нет индекса в таблице.


Искал обычно по sysindexes, но в выборку не входят таблицы без индекса.
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646564
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пкм на базе, Reports, отчет "Disk Usage By Top Tables"
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646565
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646568
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Критикпкм на базе, Reports, отчет "Disk Usage By Top Tables"

репортсы не нужны.
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646571
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKssms,

первый же скрипт в гугл
https://stackoverflow.com/questions/7892334/get-size-of-all-tables-in-database


Немного переделал скрипт:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SELECT 
    t.NAME AS TableName,
    s.Name AS SchemaName,
    p.rows AS RowCounts,
    SUM(a.total_pages) * 8 AS TotalSpaceKB, 
    CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
    SUM(a.used_pages) * 8 AS UsedSpaceKB, 
    CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB, 
    (SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
    CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN 
    sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN 
    sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
WHERE 
    t.NAME NOT LIKE 'dt%' 
    AND t.is_ms_shipped = 0
    AND i.OBJECT_ID > 255 
GROUP BY 
    t.Name, s.Name, p.Rows
ORDER BY 
    SUM(a.total_pages) DESC




Спасибо, похоже то что нужно.
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646572
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssms,

ну и
авторИскал обычно по sysindexes, но в выборку не входят таблицы без индекса.
false
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646591
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKssms,

ну и
авторИскал обычно по sysindexes, но в выборку не входят таблицы без индекса.
false

reserved
dpages

Показывают разве?
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646601
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssmsTaPaKssms,

ну и
пропущено...

false

reserved
dpages

Показывают разве?

но в выборку не входят таблицы без индекса. так входят?
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646605
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaKssmsпропущено...


reserved
dpages

Показывают разве?

но в выборку не входят таблицы без индекса. так входят?

Как надо точно не входят.
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646619
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssms,

цикл по таблицам, sp_spaceused.
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646706
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
SELECT 
	schema_name(o.schema_id) + '.' +  o.name as [Table Name], 
	fg.name as [File Group],
	SUM (p.reserved_page_count) as [reserved_page_count],
	convert(decimal(13,2), SUM (p.reserved_page_count) * 8. / 1024 / 1024) as [reservedpages GB],
	SUM (p.used_page_count) as [used_page_count],
	convert(decimal(13,2), SUM (p.used_page_count) * 8. / 1024 / 1024) as [usedpages GB],
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN (p.in_row_data_page_count + p.lob_used_page_count + p.row_overflow_used_page_count)
			ELSE p.lob_used_page_count + p.row_overflow_used_page_count
		END
		) as pages,
	SUM (
		CASE
			WHEN (p.index_id < 2) THEN p.row_count
			ELSE 0
		END
		) as [rowCount]
FROM sys.dm_db_partition_stats p (nolock)
	join sys.objects as o (nolock)
		on o.object_id = p.object_id
		and o.type = 'U'
	join sys.sysindexes i (nolock)
		on i.id = o.object_id
		and i.indid in (0,1)
	join sys.filegroups fg (nolock)
		on fg.data_space_id = i.groupid
group by o.name, o.schema_id, fg.name
order by [reservedpages GB] desc

Вроде должен всё показывать...
Он ещё по файлгруппам группирует, но это можно убрать
...
Рейтинг: 0 / 0
Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
    #39646745
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ssmsКритикпкм на базе, Reports, отчет "Disk Usage By Top Tables"

репортсы не нужны.

Reports + Profiler
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как скриптом найти самые большие таблицы в БД (обязательно включая кучи)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]