powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с индексом..
12 сообщений из 12, страница 1 из 1
Помогите пожалуйста разобраться с индексом..
    #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
Помогите пожалуйста разобраться с индексом..
    #39769087
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULER , наверное, надо показать текст запроса, DDL использованных в нём таблиц, и собственно сам план...
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #39769092
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERТворится какая то мистика, смотрю план запроса, из которого вижу, что определённый индекс использует: 111229976 строк,Не индекс использует, а запрос (операция по индексу) использует. Потому что сервер обращается к индексу более одного раза.
Покажите, действительно, запрос и план.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #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
Помогите пожалуйста разобраться с индексом..
    #39769107
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот знаете... создать запрос, который дважды использует таблицу V_ShortUnionData, и спрашивать, почему как-то не так используется индекс из таблицы T_Protocol - это немножко перебор...
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #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
Помогите пожалуйста разобраться с индексом..
    #39769114
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #39769118
Руслан Дамирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MAULERAkina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами...
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #39769122
MAULER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Руслан ДамировичMAULERAkina,
Согласен, запрос далёк от идеала, но для меня непонятно, почему с утра до вечера, один и тот же запрос выполняется за 2-3 минуты, а после 0.00 часов 20-25 мин.
Потому что с утра он (сервер) свежий и отдохнувший, а вечером затр...ейсенный твоими запросами...

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

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

Мой запрос выполняется в джобе 24/7
это пя-я-я-я-ять
...
Рейтинг: 0 / 0
Помогите пожалуйста разобраться с индексом..
    #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
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите пожалуйста разобраться с индексом..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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