Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
MAULER Member Откуда: Сообщений: 917 |
Здравствуйте. Творится какая то мистика, смотрю план запроса, из которого вижу, что определённый индекс использует: 111229976 строк, хотя таблица, в которой строится индекс, содержит 100946 записей. Удалил индекс и создал его заново. Обновил статистику (exec sp_updatestats) В плане то же самое... Непонимаю, откуда индекс берет 111 млн. записей? Индекс такой: CREATE NONCLUSTERED INDEX [ANVIZ_T_Protocol_Time] ON [dbo].[T_Protocol] ( [time] ASC ) INCLUDE ( [objid], [param1], [objtype]) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO Сервер: Microsoft SQL Server 2014 (SP2) (KB3171021) - 12.0.5000.0 (X64) Jun 17 2016 19:14:09 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor) |
4 фев 19, 10:02 [21801058] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 21048 |
MAULER, наверное, надо показать текст запроса, DDL использованных в нём таблиц, и собственно сам план... |
4 фев 19, 10:11 [21801063] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31821 |
Покажите, действительно, запрос и план. |
||
4 фев 19, 10:20 [21801070] Ответить | Цитировать Сообщить модератору |
MAULER Member Откуда: Сообщений: 917 |
alexeyvg, запрос такой: SELECT Office, Time, UserName, Direction, SensorID, nextTime, DATEDIFF(ss, Time, nextTime) AS sec FROM (SELECT Office, Time, UserName, Direction, SensorID, (SELECT TOP (1) Time FROM dbo.V_ShortUnionData AS t2 WHERE (Time > t1.Time) AND (t2.Office = N'Л') AND (t1.UserName = UserName) AND (t1.Direction = Direction) AND (t1.SensorID = SensorID) ORDER BY t1.Time) AS nextTime FROM dbo.V_ShortUnionData AS t1) AS t WHERE (DATEDIFF(ss, Time, nextTime) <= 10) А план исполнения запроса в каком виде нужен? Весь файл или достаточно фрагмента где индекс используется? |
4 фев 19, 10:23 [21801072] Ответить | Цитировать Сообщить модератору |
Akina Member Откуда: Зеленоград, Москва, Россия Сообщений: 21048 |
Вот знаете... создать запрос, который дважды использует таблицу V_ShortUnionData, и спрашивать, почему как-то не так используется индекс из таблицы T_Protocol - это немножко перебор... |
4 фев 19, 10:56 [21801091] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
MAULER, учите мат.часть
|
|
4 фев 19, 11:09 [21801102] Ответить | Цитировать Сообщить модератору |
MAULER Member Откуда: Сообщений: 917 |
Akina, Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин. |
4 фев 19, 11:16 [21801107] Ответить | Цитировать Сообщить модератору |
Руслан Дамирович Member Откуда: Резиновая нерезиновая Сообщений: 942 |
Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами... |
||
4 фев 19, 11:31 [21801121] Ответить | Цитировать Сообщить модератору |
MAULER Member Откуда: Сообщений: 917 |
Мой запрос выполняется в джобе 24/7 |
||||
4 фев 19, 11:37 [21801129] Ответить | Цитировать Сообщить модератору |
Yasha123 Member Откуда: Сообщений: 1968 |
ну так смотрите ожидания (sys.dm_os_waiting_tasks) в момент долгого выполнения. кто ж знает, чего он у вас ждет. |
4 фев 19, 11:39 [21801131] Ответить | Цитировать Сообщить модератору |
Ivan Durak Member Откуда: Minsk!!! Сообщений: 3662 |
это пя-я-я-я-ять |
||||
4 фев 19, 11:44 [21801136] Ответить | Цитировать Сообщить модератору |
MAULER Member Откуда: Сообщений: 917 |
Похоже, действительно, есть чему поучиться. Спасибо Вам за запрос, отрабатывает мгновенно. |
|||
5 фев 19, 07:01 [21801675] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |