У меня уже есть запрос, который получает размер таблиц. Однако я интересуюсь только тем, чтобы получить таблицу 10 лучших размеров с размером.Как выбрать max top 10 (n) строк с размером?
как это сделать?
select convert(varchar(30),o.name) AS table_name,
row_count(db_id(), o.id) AS row_count,
data_pages(db_id(), o.id, 0) AS pages,
data_pages(db_id(), o.id, 0) * (@@maxpagesize/1024) AS kbs
from sysobjects o
where type = 'U'
order by table_name
поиска похожих: select top 10 max(datapages) from sysobjects
редактировать:
Кроме того, теперь я должен получить размер индексов, добавив sysindexes в запросе достаточно или необходимо добавить еще одну системную таблицу, как syscoments?
писать это такой способ дает мне верхнее имя таблицы:
select top 10 convert(varchar(30),o.name) AS table_name,
row_count(db_id(), o.id) AS row_count,
data_pages(db_id(), o.id, 0) AS pages,
data_pages(db_id(), o.id, 0) * (@@maxpagesize/1024) AS kbs
from sysobjects o
where type = 'U'
order by table_name , kbs
это метание ошибки
select top 10 data_pages(db_id(), o.id, 0) * (@@maxpagesize/1024) AS kbs ,
convert(varchar(30),o.name) AS table_name,
row_count(db_id(), o.id) AS row_count,
data_pages(db_id(), o.id, 0) AS pages
from sysobjects o
where type = 'U'
order by kbs , table_name
Can» t вы просто изменяете 'order by' на' kbs' и добавляете 'top' в существующий запрос? –
@MichaelGardner ok Я попробую это сейчас, кстати, мне теперь нужно получить размер индексов, добавив sysindexes будет достаточно? – Moudiz
btw, пишущий его таким образом, бросает ошибку top 10 data_pages (db_id(), o.id, 0) * (@@ maxpagesize/1024) AS kbs – Moudiz