Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Медленно создается индекс  [new]
rinat mergenbaev
Member

Откуда:
Сообщений: 100
Привет

Есть простой запрос

select city, cityname, population 
into #tmp
from Cities 

create index ix on #tmp (city)


всего в таблице 35000 строк, вставки не идут.
комментирую создание индекса - работает 1 сек, с созданием индекса работает 35 секунд.

Что это может быть?
24 мар 15, 11:23    [17423483]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а вам там на 35 000 строк индекс точно нужен?
+ небось дальше рекомпиляции не самых простых запросов добавляют?
24 мар 15, 11:30    [17423539]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Скорее всего, в плане запроа будет просмотр таблицы, индекс не будет использован.
24 мар 15, 11:37    [17423591]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
relief
Member

Откуда:
Сообщений: 1197
Crimean
а вам там на 35 000 строк индекс точно нужен?
+ небось дальше рекомпиляции не самых простых запросов добавляют?


потом эта таблица будет джойнится на большую таблицу с 100 млн записей.
24 мар 15, 12:01    [17423793]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
rinat mergenbaev,

Вы проверили, что медленно работает именно команда create index?
Может быть у вас так:
процедура
as
    ...
    какой-то код
    ...
    select city, cityname, population 
    into #tmp
    from Cities 
    create index ix on #tmp (city)
    ...
    какой-то код
    ...

Вы комментируете строчку "create index ix on #tmp (city)" и процедура начинает работать быстро?
В таком случае, создание индекса влияет на дальнейший план запроса, видимо, в этот раз, в худшую сторону, и точная причина зависит от того, кода и его плана, который использует этот индекс.

Если же медленно выполняется сама команда создания индекса, то, можете начать с того, что получить действительный план для этой команды и посмотреть что там происходит. Может быть там сортировка сливает данные на диск или еще что-то. Также возможно, что это вещи никак не связанные с планом запроса, тогда начните с мониторинга ожиданий, посмотрите, что именно делает сервер эти 35 секунд пока создает индекс.
24 мар 15, 12:32    [17424052]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
Crimean
Member

Откуда:
Сообщений: 13147
relief,

если он был UNIQUE - я бы еще понял
а если нет, то смысл?
24 мар 15, 13:21    [17424341]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
relief
Member

Откуда:
Сообщений: 1197
Владислав Колосов
Скорее всего, в плане запроа будет просмотр таблицы, индекс не будет использован.


ну 35000 строк это же мало.
что-то тормозит сервак, не пойму что.
когда индекс не создаю создание таблицы идет быстро, а с созданием тормоза
24 мар 15, 14:29    [17424950]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
relief
Member

Откуда:
Сообщений: 1197
SomewhereSomehow
rinat mergenbaev,

Вы проверили, что медленно работает именно команда create index?
Может быть у вас так:
процедура
as
    ...
    какой-то код
    ...
    select city, cityname, population 
    into #tmp
    from Cities 
    create index ix on #tmp (city)
    ...
    какой-то код
    ...

Вы комментируете строчку "create index ix on #tmp (city)" и процедура начинает работать быстро?
В таком случае, создание индекса влияет на дальнейший план запроса, видимо, в этот раз, в худшую сторону, и точная причина зависит от того, кода и его плана, который использует этот индекс.

Если же медленно выполняется сама команда создания индекса, то, можете начать с того, что получить действительный план для этой команды и посмотреть что там происходит. Может быть там сортировка сливает данные на диск или еще что-то. Также возможно, что это вещи никак не связанные с планом запроса, тогда начните с мониторинга ожиданий, посмотрите, что именно делает сервер эти 35 секунд пока создает индекс.


нет. я создал новую процедуру и закомментил весь код, кроме того, что привел
24 мар 15, 14:30    [17424956]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
relief
нет. я создал новую процедуру и закомментил весь код, кроме того, что привел

И что? Я же не только про это написал... Ожидания смотрели?
24 мар 15, 15:14    [17425351]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
relief
Member

Откуда:
Сообщений: 1197
SomewhereSomehow
relief
нет. я создал новую процедуру и закомментил весь код, кроме того, что привел

И что? Я же не только про это написал... Ожидания смотрели?


72% времени в команде CREATE INDEX занимает
ORDER BY tempdb.dbo.[#tmp] city 


проблема в tempdb?
24 мар 15, 15:26    [17425433]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
SomewhereSomehow
Member

Откуда: Moscow
Сообщений: 2480
Блог
relief,

72% - Как вы это поняли?
Под ожиданиями я подразумевал что-то из sys.dm_os_waiting_tasks
Кроме того, я еще писал про план запроса, и сортировку, которая возможно сливает данные на диск - это вы проверяли?
24 мар 15, 15:47    [17425573]     Ответить | Цитировать Сообщить модератору
 Re: Медленно создается индекс  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4974
Когда же вы наконец на inMemeory перейдёте и забудете про этот гемор?
24 мар 15, 16:13    [17425746]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить