Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
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] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
а вам там на 35 000 строк индекс точно нужен? + небось дальше рекомпиляции не самых простых запросов добавляют? |
24 мар 15, 11:30 [17423539] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8303 |
Скорее всего, в плане запроа будет просмотр таблицы, индекс не будет использован. |
24 мар 15, 11:37 [17423591] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
потом эта таблица будет джойнится на большую таблицу с 100 млн записей. |
||
24 мар 15, 12:01 [17423793] Ответить | Цитировать Сообщить модератору |
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] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
relief, если он был UNIQUE - я бы еще понял а если нет, то смысл? |
24 мар 15, 13:21 [17424341] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
ну 35000 строк это же мало. что-то тормозит сервак, не пойму что. когда индекс не создаю создание таблицы идет быстро, а с созданием тормоза |
||
24 мар 15, 14:29 [17424950] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
нет. я создал новую процедуру и закомментил весь код, кроме того, что привел |
||
24 мар 15, 14:30 [17424956] Ответить | Цитировать Сообщить модератору |
SomewhereSomehow Member Откуда: Moscow Сообщений: 2480 Блог |
И что? Я же не только про это написал... Ожидания смотрели? |
||
24 мар 15, 15:14 [17425351] Ответить | Цитировать Сообщить модератору |
relief Member Откуда: Сообщений: 1197 |
72% времени в команде CREATE INDEX занимает ORDER BY tempdb.dbo.[#tmp] city проблема в tempdb? |
||||
24 мар 15, 15:26 [17425433] Ответить | Цитировать Сообщить модератору |
SomewhereSomehow Member Откуда: Moscow Сообщений: 2480 Блог |
relief, 72% - Как вы это поняли? Под ожиданиями я подразумевал что-то из sys.dm_os_waiting_tasks Кроме того, я еще писал про план запроса, и сортировку, которая возможно сливает данные на диск - это вы проверяли? |
24 мар 15, 15:47 [17425573] Ответить | Цитировать Сообщить модератору |
a_voronin Member Откуда: Москва Сообщений: 4807 |
Когда же вы наконец на inMemeory перейдёте и забудете про этот гемор? |
24 мар 15, 16:13 [17425746] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |