powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ускорить запрос
5 сообщений из 5, страница 1 из 1
Как ускорить запрос
    #39745820
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно получить самые большие индексы для удаления в тестовых база для программистов
Пытаюсь вот таким запросом получить топ наибольших индексов. Но запрос очень долго выполняется. Я ни разу не дождался результата.

Код: sql
1.
2.
3.
4.
5.
6.
7.
DROP TABLE #temptab
select top 100 
object_id,index_id 
into #temptab 
from sys.dm_db_index_physical_stats(db_id(''),null,null,null,'LIMITED') 
where index_type_desc='NONCLUSTERED INDEX' 
order by page_count desc




Как можно получить топ больших индексов?
...
Рейтинг: 0 / 0
Как ускорить запрос
    #39745855
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
SELECT TOP(100) o.[object_id]
              , obj_name = s.[name] + '.' + o.[name]
              , index_name = i.[name]
              , total_space = CAST(i2.total_pages * 8. / 1024 AS DECIMAL(18, 2))
FROM sys.objects o
JOIN sys.indexes i ON i.[object_id] = o.[object_id]
JOIN sys.schemas s ON o.[schema_id] = s.[schema_id]
JOIN (
    SELECT p.[object_id]
            , p.index_id
            , total_pages = SUM(a.total_pages)
    FROM sys.partitions p
    JOIN sys.allocation_units a ON p.[partition_id] = a.container_id
    GROUP BY p.[object_id]
            , p.index_id
) i2 ON o.[object_id] = i2.[object_id] AND i2.index_id = i.index_id
WHERE o.[type] IN ('V', 'U')
    AND o.is_ms_shipped = 0
ORDER BY i2.total_pages DESC
...
Рейтинг: 0 / 0
Как ускорить запрос
    #39745858
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Выгребание данных из sys.allocation_units самое быстрое что можно предложить, а потом уже фильтровать по тем индексам которые вам нужны. Но там нужно понимать что не для всех индексов размер вернется корректно. Например для колумнсторов запрос будет чуть отличаться, как и для ИнМемори таблиц.
...
Рейтинг: 0 / 0
Как ускорить запрос
    #39745859
Фотография leonix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlanDenton, спасибо! Моментально отработал.
...
Рейтинг: 0 / 0
Как ускорить запрос
    #39745864
AlanDenton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Велкомс :) к слову если будет желание тулу по обслуживания индексов попробовать, то стучитесь на Хабре @AlanDenton
Думаю Вам такое как раз будет интересным раз такие запросы пишете
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как ускорить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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