powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Помогите разобраться с оптимизацией запросов
25 сообщений из 38, страница 1 из 2
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #40050597
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa,

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

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

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


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

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


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

вижу, спасибо
...
Рейтинг: 0 / 0
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #40050692
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
komrad
teCa,

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


в базе db_Spisanie


сравните 2-й и 4-й индексы - могут оказаться полными дубликатами
...
Рейтинг: 0 / 0
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #40050749
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
teCa
прикладываю новый план.

https://www.sql.ru/forum/actualfile.aspx?id=22289688] Приложенный файл (vwWriteOffRezerv_V3.zip - 12Kb)
Судя по всему, это уже другой запрос, а не обсуждаемый.
...
Рейтинг: 0 / 0
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #40050766
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В общем затраченное время уменьшилось за счет параллелизма.
И форма плана стала другой.

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

К тому же, у вас там ошибка. Нужно
Код: sql
1.
2.
WHERE (oper.fldState < 8 or oper.fldState>9)
		AND NOT EXISTS (
...
Рейтинг: 0 / 0
Помогите разобраться с оптимизацией запросов
    #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
Помогите разобраться с оптимизацией запросов
    #40050802
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Покажите план для
Код: sql
1.
select checksum_agg(checksum(*)) from [db_Spisanie].[dbo].[vwWriteOffRezerv_V5]
...
Рейтинг: 0 / 0
Помогите разобраться с оптимизацией запросов
    #40050942
teCa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
invm
Покажите план для
Код: sql
1.
select checksum_agg(checksum(*)) from [db_Spisanie].[dbo].[vwWriteOffRezerv_V5]


-22871429

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

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



в базе db_Spisanie




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


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

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


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


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