Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с оптимизацией запросов / 25 сообщений из 38, страница 1 из 2
04.03.2021, 11:12
    #40050577
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
Всем привет. Давно хотел разобраться в технике оптимизации запросов, и вот представился случай.

Есть вот такая вьюха:
Код: 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.
29.
30.
31.
32.
33.
34.
WITH spis_in_reserv --Оцениваем списания, которые дожны участвовать в расчете резервов в сети
	AS (
		SELECT oper.fldNZ AS OperId, oper.fldPID
		FROM dbo.tblOperation AS oper WITH(NOLOCK)
        JOIN db_Partners.ors.AllPartners AS p ON p.ID = oper.fldPID AND p.RetailChainID = 1 --только списания сети "ЧГ"
		WHERE oper.fldState NOT IN (8, 9) 
		AND NOT EXISTS (
			SELECT 1
			FROM dbo.tblOperHist AS toh WITH(NOLOCK)
			WHERE toh.OperID = oper.fldNZ AND
			  	  toh.[State] = 5 AND CAST(toh.StateDate AS DATE) < CAST(GETDATE() AS DATE)
		) --Списания, у которых статус "выгрузка в матрицу" вчерашний день или ранее, попали в расчет остатков магазина, поэтому в расчете зарезервированного количества товара не участвуют
		AND oper.fldDate >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE)) --Garbadge remove
	),
    
	reservs -- считаем резервы


	AS(
		SELECT sr.fldPID AS PartnerId, ts.fldBookID AS BookId, SUM(ISNULL(ts.fldQuan, 0)) AS QtyRezerved
		FROM dbo.tblSub AS ts WITH(NOLOCK)
		JOIN spis_in_reserv sr ON sr.OperId = ts.fldNZ
		GROUP BY ts.fldBookID, sr.fldPID
	)

	SELECT tsm.PartnerID, 
		tsm.BookID, 
		tsm.rem, 
		ISNULL(r.QtyRezerved, 0) AS [rezerv], 
		ISNULL(tsm.Rem, 0) - ISNULL(r.QtyRezerved, 0) AS [DostupnoRem], 
		ISNULL(tsm.RemInShop, 0) - ISNULL(r.QtyRezerved, 0) AS [DostupnoRemInShop]
	FROM db_Matrix.DBO.tblSuperMain AS tsm WITH(NOLOCK)
	LEFT JOIN reservs r ON tsm.PartnerID = r.PartnerId AND tsm.BookID = r.BookId
	WHERE tsm.Rem > 0;



Выполняю такой запрос:
Код: sql
1.
2.
3.
set statistics io ON
set statistics time on
select top 1000 * from [db_Spisanie].[dbo].[vwWriteOffRezerv_V2] 



Пот полученный результат:
авторВремя синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

(затронуто строк: 1000)
Таблица "Workfile". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSuperMain". Сканирований 1, логических операций чтения 172, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSub". Сканирований 2774, логических операций чтения 12318, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperHist". Сканирований 17449, логических операций чтения 52432, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperation". Сканирований 2, логических операций чтения 3408, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Partner". Сканирований 1, логических операций чтения 15, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Type". Сканирований 1, логических операций чтения 2, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "PartnerSource". Сканирований 0, логических операций чтения 2, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.

(затронута одна строка)

Время работы SQL Server:
Время ЦП = 375 мс, затраченное время = 999 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

Время выполнения: 2021-03-04T10:44:04.2216785+03:00

План запроса во вложении.

Можем с вами поэтапно разобрать, на что следует обратить внимание, и какие действия стоит предпринять для оптимизации.
...
Рейтинг: 0 / 0
04.03.2021, 11:53
    #40050597
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa,

Таблица "tblOperHist". Сканирований 17449

CAST(toh.StateDate AS DATE) < CAST(GETDATE() AS DATE) - плохое выражение, создайте persisted колонку для CAST(toh.StateDate AS DATE) и проиндексируйте или перефразируйте выражение без преобразование к типу дата. Также индекс нужен.
...
Рейтинг: 0 / 0
04.03.2021, 12:58
    #40050618
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa,

а покажите
Код: sql
1.
sp_helpindex tblOperHist


в базе db_Spisanie
...
Рейтинг: 0 / 0
04.03.2021, 13:38
    #40050628
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
komrad
teCa,

а покажите
Код: sql
1.
sp_helpindex tblOperHist


в базе db_Spisanie
...
Рейтинг: 0 / 0
04.03.2021, 13:39
    #40050629
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
1. Почти половина затраченного времени ушла на ожидание SOS_SCHEDULER_YIELD, т.е. проблемы с процессорным ресурсом
2. Неверная оценка кардинальности предиката oper.fldState NOT IN (8, 9). Попробуйте заменить на oper.fldState < 8 or oper.fldState > 9
...
Рейтинг: 0 / 0
04.03.2021, 13:41
    #40050631
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
Владислав Колосов
Таблица "tblOperHist". Сканирований 17449
Это не сканирование таблицы. Это сканирование диапазона индекса.
Владислав Колосов
CAST(toh.StateDate AS DATE) < CAST(GETDATE() AS DATE) - плохое выражение, создайте persisted колонку для CAST(toh.StateDate AS DATE) и проиндексируйте или перефразируйте выражение без преобразование к типу дата. Также индекс нужен.
Прежде, чем писать, посмотрели бы что в плане в Seek Predicate...
...
Рейтинг: 0 / 0
04.03.2021, 14:00
    #40050643
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
2. Неверная оценка кардинальности предиката oper.fldState NOT IN (8, 9). Попробуйте заменить на oper.fldState < 8 or oper.fldState > 9


Данная корректировка дала значительный прирост:

авторТаблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Type". Сканирований 12, логических операций чтения 24, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperation". Сканирований 0, логических операций чтения 32850, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSub". Сканирований 1274, логических операций чтения 47309, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Partner". Сканирований 0, логических операций чтения 2548, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "PartnerSource". Сканирований 0, логических операций чтения 2548, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSuperMain". Сканирований 5, логических операций чтения 206, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.

(затронута одна строка)

Время работы SQL Server:
Время ЦП = 187 мс, затраченное время = 114 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
...
Рейтинг: 0 / 0
04.03.2021, 14:59
    #40050684
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm

2. Неверная оценка кардинальности предиката oper.fldState NOT IN (8, 9). Попробуйте заменить на oper.fldState < 8 or oper.fldState > 9


похоже что план не от указанного запроса - 8-ки нет

<ScalarOperator ScalarString="[db_Spisanie].[dbo].[tblOperation].[fldDate] as [oper].[fldDate]>=dateadd(day,(-30),CONVERT(date,getdate(),0)) AND ([db_Spisanie].[dbo].[tblOperation].[fldState] as [oper].[fldState]<(9) OR [db_Spisanie].[dbo].[tblOperation].[fldState] as [oper].[fldState]>(9))">
...
Рейтинг: 0 / 0
04.03.2021, 15:04
    #40050686
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
komrad
8-ки нет
8 - в Seek Predicate, 9 - в Predicate
...
Рейтинг: 0 / 0
04.03.2021, 15:07
    #40050687
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
komrad
8-ки нет
8 - в Seek Predicate, 9 - в Predicate

вижу, спасибо
...
Рейтинг: 0 / 0
04.03.2021, 15:16
    #40050691
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
2. Неверная оценка кардинальности предиката oper.fldState NOT IN (8, 9). Попробуйте заменить на oper.fldState < 8 or oper.fldState > 9


Можете объяснить, почему oper.fldState NOT IN (8, 9) медленнее чем oper.fldState < 8 or oper.fldState > 9?
...
Рейтинг: 0 / 0
04.03.2021, 15:17
    #40050692
komrad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa
komrad
teCa,

а покажите
Код: sql
1.
sp_helpindex tblOperHist


в базе db_Spisanie


сравните 2-й и 4-й индексы - могут оказаться полными дубликатами
...
Рейтинг: 0 / 0
04.03.2021, 15:31
    #40050703
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa
Можете объяснить, почему oper.fldState NOT IN (8, 9) медленнее чем oper.fldState < 8 or oper.fldState > 9?
Во-первых, вы не показали новый план.

NOT IN (8, 9) - берет из индекса строки с oper.fldState < 8 и oper.fldState > 8 и потом отфильтровывает строки с oper.fldState = 9
oper.fldState < 8 or oper.fldState > 9 - скорее всего, сразу берет из индекса строки с oper.fldState < 8 и oper.fldState > 9
...
Рейтинг: 0 / 0
04.03.2021, 15:41
    #40050710
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
teCa
Можете объяснить, почему oper.fldState NOT IN (8, 9) медленнее чем oper.fldState < 8 or oper.fldState > 9?
Во-первых, вы не показали новый план.

NOT IN (8, 9) - берет из индекса строки с oper.fldState < 8 и oper.fldState > 8 и потом отфильтровывает строки с oper.fldState = 9
oper.fldState < 8 or oper.fldState > 9 - скорее всего, сразу берет из индекса строки с oper.fldState < 8 и oper.fldState > 9


Спасибо за разъяснение, прикладываю новый план.
...
Рейтинг: 0 / 0
04.03.2021, 16:16
    #40050749
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa
прикладываю новый план.

https://www.sql.ru/forum/actualfile.aspx?id=22289688] Приложенный файл (vwWriteOffRezerv_V3.zip - 12Kb)
Судя по всему, это уже другой запрос, а не обсуждаемый.
...
Рейтинг: 0 / 0
04.03.2021, 16:25
    #40050753
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
teCa
прикладываю новый план.

https://www.sql.ru/forum/actualfile.aspx?id=22289688] Приложенный файл (vwWriteOffRezerv_V3.zip - 12Kb)
Судя по всему, это уже другой запрос, а не обсуждаемый.


Странно, ошибиться не мог.

Текст вьюхи с исправлением NOT IN

Код: 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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
CREATE  VIEW [dbo].[vwWriteOffRezerv_V5]
AS

	WITH spis_in_reserv --Оцениваем списания, которые дожны участвовать в расчете резервов в сети
	AS (
		SELECT oper.fldNZ AS OperId, oper.fldPID
		FROM dbo.tblOperation AS oper WITH(NOLOCK)
        JOIN db_Partners.ors.AllPartners AS p ON p.ID = oper.fldPID AND p.RetailChainID = 1 --только списания сети "ЧГ"
		WHERE oper.fldState < 8 or oper.fldState>9 
		AND NOT EXISTS (
			SELECT 1
			FROM dbo.tblOperHist AS toh WITH(NOLOCK)
			WHERE toh.OperID = oper.fldNZ AND
			  	  toh.[State] = 5 AND CAST(toh.StateDate AS DATE) < CAST(GETDATE() AS DATE)
		) --Списания, у которых статус "выгрузка в матрицу" вчерашний день или ранее, попали в расчет остатков магазина, поэтому в расчете зарезервированного количества товара не участвуют
		AND oper.fldDate >= DATEADD(DAY, -30, CAST(GETDATE() AS DATE)) --Garbadge remove
	),
    
	reservs -- считаем резервы


	AS(
		SELECT sr.fldPID AS PartnerId, ts.fldBookID AS BookId, SUM(ISNULL(ts.fldQuan, 0)) AS QtyRezerved
		FROM dbo.tblSub AS ts WITH(NOLOCK)
		JOIN spis_in_reserv sr ON sr.OperId = ts.fldNZ
		GROUP BY ts.fldBookID, sr.fldPID
	)

	SELECT tsm.PartnerID, 
		tsm.BookID, 
		tsm.rem, 
		ISNULL(r.QtyRezerved, 0) AS [rezerv], 
		ISNULL(tsm.Rem, 0) - ISNULL(r.QtyRezerved, 0) AS [DostupnoRem], 
		ISNULL(tsm.RemInShop, 0) - ISNULL(r.QtyRezerved, 0) AS [DostupnoRemInShop]
	FROM db_Matrix.DBO.tblSuperMain AS tsm WITH(NOLOCK)
	LEFT JOIN reservs r ON tsm.PartnerID = r.PartnerId AND tsm.BookID = r.BookId
	WHERE tsm.Rem > 0;


GO



Вызов:
Код: sql
1.
2.
3.
set statistics io ON
set statistics time on
select top 1000 * from [db_Spisanie].[dbo].[vwWriteOffRezerv_V5] 



Статистика:
авторВремя синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

(затронуто строк: 1000)
Таблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Type". Сканирований 9, логических операций чтения 18, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperation". Сканирований 0, логических операций чтения 50485, физических операций чтения 2, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSub". Сканирований 1421, логических операций чтения 71145, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Partner". Сканирований 0, логических операций чтения 2842, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "PartnerSource". Сканирований 0, логических операций чтения 2842, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSuperMain". Сканирований 5, логических операций чтения 211, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 75, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.

(затронута одна строка)

Время работы SQL Server:
Время ЦП = 358 мс, затраченное время = 182 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

План во вложении
...
Рейтинг: 0 / 0
04.03.2021, 16:47
    #40050766
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
В общем затраченное время уменьшилось за счет параллелизма.
И форма плана стала другой.

Кстати, предложение top может влиять на форму плана.

К тому же, у вас там ошибка. Нужно
Код: sql
1.
2.
WHERE (oper.fldState < 8 or oper.fldState>9)
		AND NOT EXISTS (
...
Рейтинг: 0 / 0
04.03.2021, 16:59
    #40050771
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
В общем затраченное время уменьшилось за счет параллелизма.
И форма плана стала другой.

Кстати, предложение top может влиять на форму плана.

К тому же, у вас там ошибка. Нужно
Код: sql
1.
2.
WHERE (oper.fldState < 8 or oper.fldState>9)
		AND NOT EXISTS (



Действительно, после добавления скобок производительность вернулась к прежним значениям.

авторВремя синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.

(затронуто строк: 1000)
Таблица "Workfile". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Worktable". Сканирований 0, логических операций чтения 0, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSuperMain". Сканирований 1, логических операций чтения 172, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblSub". Сканирований 2906, логических операций чтения 12891, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperHist". Сканирований 17593, логических операций чтения 52885, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "tblOperation". Сканирований 2, логических операций чтения 1759, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Partner". Сканирований 1, логических операций чтения 15, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "Type". Сканирований 1, логических операций чтения 2, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.
Таблица "PartnerSource". Сканирований 0, логических операций чтения 2, физических операций чтения 0, операций чтения страничного сервера 0, операций чтения, выполненных с упреждением 0, операций чтения страничного сервера, выполненных с упреждением 0, логических операций чтения LOB 0, физических операций чтения LOB 0, операций чтения LOB страничного сервера 0, операций чтения LOB, выполненных с упреждением 0, операций чтения LOB страничного сервера, выполненных с упреждением 0.

(затронута одна строка)

Время работы SQL Server:
Время ЦП = 515 мс, затраченное время = 1354 мс.
Время синтаксического анализа и компиляции SQL Server:
время ЦП = 0 мс, истекшее время = 0 мс.

Время работы SQL Server:
Время ЦП = 0 мс, затраченное время = 0 мс.
...
Рейтинг: 0 / 0
04.03.2021, 17:53
    #40050802
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
Покажите план для
Код: sql
1.
select checksum_agg(checksum(*)) from [db_Spisanie].[dbo].[vwWriteOffRezerv_V5]
...
Рейтинг: 0 / 0
05.03.2021, 09:07
    #40050942
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
Покажите план для
Код: sql
1.
select checksum_agg(checksum(*)) from [db_Spisanie].[dbo].[vwWriteOffRezerv_V5]


-22871429

Простите за глупый вопрос, что это и для чего?
...
Рейтинг: 0 / 0
05.03.2021, 09:20
    #40050944
Jhonny-2005
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa,
У Вас же вроде бы план попросили, а не результат запроса.
...
Рейтинг: 0 / 0
05.03.2021, 09:30
    #40050948
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa
komrad
teCa,

а покажите
Код: sql
1.
sp_helpindex tblOperHist



в базе db_Spisanie




А зачем нафигачили столько одинаковых индексов?
1,3
2,4,5
...
Рейтинг: 0 / 0
05.03.2021, 10:05
    #40050960
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
Jhonny-2005
teCa,
У Вас же вроде бы план попросили, а не результат запроса.


Действительно.
...
Рейтинг: 0 / 0
05.03.2021, 10:49
    #40050993
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
teCa,

1. Поудаляйте ненужные индексы
2. Создайте индекс, рекомендованный в последнем плане.
3. У вас нехватка ресурсов (CPU и память)
...
Рейтинг: 0 / 0
05.03.2021, 10:52
    #40050996
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите разобраться с оптимизацией запросов
invm
teCa,
3. У вас нехватка ресурсов (CPU и память)


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


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