Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
Добрый день!
Подскажите новичку:
Имеется таблица с большим количеством данных (порядка миллиона записей). Так вот, запрос типа
select * from table where id='xxx'
выполняется порядка 40-50 секунд. Подскажите, как можно его оптимизировать.
10 мар 12, 18:00    [12221337]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Toxa xonyx
Добрый день!
Подскажите новичку:
Имеется таблица с большим количеством данных (порядка миллиона записей). Так вот, запрос типа
select * from table where id='xxx'
выполняется порядка 40-50 секунд. Подскажите, как можно его оптимизировать.
Сделать кластерный индекс по полю id.
10 мар 12, 18:02    [12221349]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а данных сколько в итоге выбирается?
10 мар 12, 18:38    [12221504]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
Приблизительно на каждый объект порядка в среднем около 3000 записей. Но есть и намного меньше. Таких объектов где-то около 300. Помимо необходимых мне данных в таблицу заносятся множество других. Она выполняет своего рода контейнера для разрозненной информации.
10 мар 12, 19:39    [12221868]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а индекс есть по полю хоть какой?
10 мар 12, 20:52    [12222279]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

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

поиск идет по id - некластерному индексу
11 мар 12, 14:15    [12225356]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
Crimean,

поиск идет по id - некластерному индексу
Тогда план выкладывайте
11 мар 12, 14:21    [12225408]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
какой план? )
11 мар 12, 14:26    [12225455]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Crimean
Member

Откуда:
Сообщений: 13147
индексы перестраивали давно?
статистики вообще обновляете?
11 мар 12, 14:27    [12225469]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Toxa xonyx
какой план? )
В котором вы увидели, что "поиск идет по id - некластерному индексу ".
11 мар 12, 14:35    [12225534]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
по статистике:
page fullness: 94%
Fragmentation: 28%

всего записей: 37888700
11 мар 12, 14:41    [12225590]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
какой план? )
План запроса.

Ещё лучьше вместе с планом выложить строки из трейса - что бы понять, почему запрос медленно выполняется - либо требует много ресурсов, либо ему мешают.
11 мар 12, 14:42    [12225599]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
всего записей: 37888700
это столько возвращает запрос select * from table where id='xxx'

Крутое у вас железо, всего то 40-50 секунд! :-)
11 мар 12, 14:44    [12225612]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

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

Увы, не мое )
Возвращает пока только 3-4 записи. Внедряем новый проект в уже существующий. По старым объектам возвращает порядка 3-4 тысяч... )
Прилагаю trace-файл (не знаю, правильно сделал - нет, через sql server profiler). Обращаюсь к таблице Tisa-data-calc.

К сообщению приложен файл (trace.rar - 11Kb) cкачать
11 мар 12, 15:09    [12225810]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
Наврал, по старым объектам - около 200 записей возвращает.
11 мар 12, 15:11    [12225824]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
https://www.sql.ru/faq/faq_topic.aspx?fid=393
11 мар 12, 15:14    [12225844]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
А еще вы наврали с текстом запроса - у вас там сортировка есть.
11 мар 12, 15:15    [12225849]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
черт, и вправду наврал. Не стоит мне доверять )

К сообщению приложен файл (statistics.csv - 4Kb) cкачать
11 мар 12, 15:22    [12225899]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
вот вроде план

К сообщению приложен файл (plan.csv - 992bytes) cкачать
11 мар 12, 15:22    [12225903]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
  |--Parallelism(Gather Streams, ORDER BY:([Runtime].[dbo].[TISA_DATA_CALC].[DAT_DT] ASC))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000], [Expr1006]) WITH ORDERED PREFETCH)
            |--Index Scan(OBJECT:([Runtime].[dbo].[TISA_DATA_CALC].[PK__TISA_DATA_CALC__1B7E091A]),  WHERE:([Runtime].[dbo].[TISA_DATA_CALC].[OBJ_ID]=(1111301684)) ORDERED FORWARD)
            |--RID Lookup(OBJECT:([Runtime].[dbo].[TISA_DATA_CALC]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)


У вас скан индекса (а не поиск, как вы говорили) и лукап.

Вот ваши вопросы в этом случае: 12225469
11 мар 12, 15:32    [12225954]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
Прилагаю trace-файл (не знаю, правильно сделал - нет, через sql server profiler). Обращаюсь к таблице Tisa-data-calc.
Этот запрос?
select * from tisa_data_calc where obj_id = '1111310084' order by Dat_dt

Ещё скрипт создания таблицы с индексами приложите. Похоже, нету там индекса, хотя, может быть, дело и в статистике.
11 мар 12, 16:34    [12226466]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
alexeyvg
Этот запрос?
select * from tisa_data_calc where obj_id = '1111310084' order by Dat_dt

Да, он самый.
Скрипт создания таблицы приложить нет возможности, но хочу сказать, что там два индексных поля: dat_dt (пишется дата и время) и obj_id.
11 мар 12, 18:34    [12227387]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
Скрипт создания таблицы приложить нет возможности, но хочу сказать, что там два индексных поля: dat_dt (пишется дата и время) и obj_id.
Именно в таком порядке?

Тогда понятно, этот индекс не можкет использоваться.

Вот этот милион записей и сканится каждый раз.

Вы будьте точнее в формулировках, а то уже не раз ошибались, и эти ошибки полностью меняют картину.
11 мар 12, 18:41    [12227428]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
Toxa xonyx
Member

Откуда:
Сообщений: 19
alexeyvg
Вы будьте точнее в формулировках, а то уже не раз ошибались, и эти ошибки полностью меняют картину.

Хорошо, постараюсь.
alexeyvg
Тогда понятно, этот индекс не можкет использоваться.

Вот этот милион записей и сканится каждый раз.

Вы имеете ввиду obj_id?
11 мар 12, 18:53    [12227510]     Ответить | Цитировать Сообщить модератору
 Re: Долго выполняется запрос  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31957
Toxa xonyx
alexeyvg
Тогда понятно, этот индекс не можкет использоваться.

Вот этот милион записей и сканится каждый раз.

Вы имеете ввиду obj_id?
Я имею в виду, что если у вас есть индекс, в котором поле obj_id второе, то он использоваться не будет.

Вы наверное, про такой случай сказали?
Toxa xonyx
там два индексных поля: dat_dt (пишется дата и время) и obj_id


А то вообще это тоже у вас неточная формулировка - в MSSQL не бывает индексных полей, и нам остаётся только гадать, что жек там у вас за схема данных :-(
11 мар 12, 19:38    [12227707]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить