Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с индексом.. / 12 сообщений из 12, страница 1 из 1
04.02.2019, 10:02
    #39769083
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
Здравствуйте.

Творится какая то мистика, смотрю план запроса, из которого вижу, что определённый индекс использует: 111229976 строк,
хотя таблица, в которой строится индекс, содержит 100946 записей.

Удалил индекс и создал его заново.
Обновил статистику (exec sp_updatestats)

В плане то же самое...
Непонимаю, откуда индекс берет 111 млн. записей?

Индекс такой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
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)
...
Рейтинг: 0 / 0
04.02.2019, 10:11
    #39769087
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
MAULER , наверное, надо показать текст запроса, DDL использованных в нём таблиц, и собственно сам план...
...
Рейтинг: 0 / 0
04.02.2019, 10:20
    #39769092
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
MAULERТворится какая то мистика, смотрю план запроса, из которого вижу, что определённый индекс использует: 111229976 строк,Не индекс использует, а запрос (операция по индексу) использует. Потому что сервер обращается к индексу более одного раза.
Покажите, действительно, запрос и план.
...
Рейтинг: 0 / 0
04.02.2019, 10:23
    #39769093
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
alexeyvg,
запрос такой:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
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)



А план исполнения запроса в каком виде нужен? Весь файл или достаточно фрагмента где индекс используется?
...
Рейтинг: 0 / 0
04.02.2019, 10:56
    #39769107
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
Вот знаете... создать запрос, который дважды использует таблицу V_ShortUnionData, и спрашивать, почему как-то не так используется индекс из таблицы T_Protocol - это немножко перебор...
...
Рейтинг: 0 / 0
04.02.2019, 11:09
    #39769111
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
MAULER,
учите мат.часть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
WITH
tt AS (
  SELECT 
    [Office]    = [Office],
	  [UserName]  = [UserName],
	  [Direction] = [Direction],
	  [SensorID]  = [SensorID],
    [Time]      = [Time],
	  [NextTime]  = LEAD( [Time] ) 
                  OVER (
                    PARTITION BY
                      [Office],
                      [UserName],
                      [Direction],
                      [SensorID]
                    ORDER BY
                      [Time] )
  FROM 
    [dbo].[V_ShortUnionData]
  WHERE
    [Office] = N'Л'
)
SELECT
  *
FROM
  tt
WHERE 
  DATEDIFF( SS, [Time], [NextTime] ) <= 10


...
Рейтинг: 0 / 0
04.02.2019, 11:16
    #39769114
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
Akina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
...
Рейтинг: 0 / 0
04.02.2019, 11:31
    #39769118
Руслан Дамирович
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
MAULERAkina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами...
...
Рейтинг: 0 / 0
04.02.2019, 11:37
    #39769122
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
Руслан ДамировичMAULERAkina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами...

Мой запрос выполняется в джобе 24/7
...
Рейтинг: 0 / 0
04.02.2019, 11:39
    #39769123
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
ну так смотрите ожидания (sys.dm_os_waiting_tasks) в момент долгого выполнения.
кто ж знает, чего он у вас ждет.
...
Рейтинг: 0 / 0
04.02.2019, 11:44
    #39769127
Ivan Durak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
MAULERРуслан Дамировичпропущено...

Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами...

Мой запрос выполняется в джобе 24/7
это пя-я-я-я-ять
...
Рейтинг: 0 / 0
05.02.2019, 07:01
    #39769469
MAULER
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите пожалуйста разобраться с индексом..
Руслан ДамировичMAULER,
учите мат.часть

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
WITH
tt AS (
  SELECT 
    [Office]    = [Office],
	  [UserName]  = [UserName],
	  [Direction] = [Direction],
	  [SensorID]  = [SensorID],
    [Time]      = [Time],
	  [NextTime]  = LEAD( [Time] ) 
                  OVER (
                    PARTITION BY
                      [Office],
                      [UserName],
                      [Direction],
                      [SensorID]
                    ORDER BY
                      [Time] )
  FROM 
    [dbo].[V_ShortUnionData]
  WHERE
    [Office] = N'Л'
)
SELECT
  *
FROM
  tt
WHERE 
  DATEDIFF( SS, [Time], [NextTime] ) <= 10




Похоже, действительно, есть чему поучиться. Спасибо Вам за запрос, отрабатывает мгновенно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с индексом.. / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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