Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сканирование таблицы  [new]
ferzmikk
Member

Откуда:
Сообщений: 2260
Здравствуйте!

Задана структура таблицы:
+SQL
CREATE TABLE dbo.Продажи
(
	Период INT NULL,	
	ГруппаКлиентов NVARCHAR(20) NULL,
	Клиент NVARCHAR(20) NULL,
	ГруппаSKU NVARCHAR(20) NULL,
	SKU NVARCHAR(20) NULL,
	Количество INT NULL	
)

CREATE CLUSTERED INDEX ClusteredIndex
	ON dbo.Продажи (Период ASC, ГруппаКлиентов ASC, Клиент ASC, ГруппаSKU ASC, SKU ASC, Количество ASC)
Далее вставлены строки.

Делаем выгрузку
+SQL
DROP TABLE IF EXISTS #Table1;

WITH Table1 AS
	(SELECT
		*
	FROM
		(SELECT
			ГруппаКлиентов,
			Клиент,
			ГруппаSKU,
			SKU,
			Количество
		FROM
			dbo.Продажи
		WHERE			 
			ГруппаКлиентов = 'ГруппаКлиентов 1' --Уровень фильтра 1
		) t1
	WHERE
		Клиент = 'Клиент 1' --Уровень фильтра 2
	)

SELECT
	*
INTO
	#Table1
FROM
	Table1
WHERE
	ГруппаSKU = 'ГруппаSKU 1' --Уровень фильтра 3

SELECT
	*
FROM
	#Table1
WHERE
	SKU = 'SKU 1' --Уровень фильтра 4
Верно ли понимаю, что индексы влияют только на фильтры уровня 1 и остальные фильтры (уровни 2-4) работают как сканирование таблицы?
14 ноя 21, 17:46    [22395918]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование таблицы  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3449
ferzmikk,

План выполнения смотреть не пробовали? Он все покажет.

Кстати, ваш "уровень 4" это отдельный запрос от первых трех. И да, в нем будет сканирование.
14 ноя 21, 18:36    [22395933]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование таблицы  [new]
aleks222
Member

Откуда:
Сообщений: 1846
Не понимаешь.
14 ноя 21, 18:36    [22395934]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 32173
ferzmikk
Верно ли понимаю, что индексы влияют только на фильтры уровня 1 и остальные фильтры (уровни 2-4) работают как сканирование таблицы?
Нет.

Но вообще для ваших условий всех вместе, и для каждого по отдельности, поиск по индексу использован быть не может, только сканирование индекса, то есть всей таблицы.

Вы, похоже, про индексы вообще ничего не знаете?
14 ноя 21, 21:51    [22395979]     Ответить | Цитировать Сообщить модератору
 Re: Сканирование таблицы  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4974
ferzmikk,

Посмотрите в сторону OLAP кубов
17 ноя 21, 12:48    [22396921]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить