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

Откуда: Белокаменная
Сообщений: 260
есть таблица

ID, Status1_ID, Status2_ID, Ststus3_ID, Text1, Text2

К ней приходят запросы на выборку всех столбцов c фильтрацией по статусам в разных комбинациях

кластеный индекс на столбце ID
некластерные индексы на полях со статусами

я попробовал разбить ее на две таблицы со связью один к одному

T1
ID, Status1_ID, Status2_ID, Ststus3_ID

T2
ID, Text1, Text2

когда сравнил планы запросов выяснил что в первом случае key lookup , во втором случае вместо него сик по таблице T2, но весят примерно одинаково

подскажите,
какие могут быть аргументы за и против такого разбиения?
15 май 15, 11:20    [17643849]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104760
fduch f.f.
выяснил что в первом случае key lookup

Т.е. оба ваших плана состоят из одного шага ?
15 май 15, 11:37    [17644026]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
fduch f.f.
есть таблица

ID, Status1_ID, Status2_ID, Ststus3_ID, Text1, Text2

К ней приходят запросы на выборку всех столбцов c фильтрацией по статусам в разных комбинациях

кластеный индекс на столбце ID
некластерные индексы на полях со статусами

я попробовал разбить ее на две таблицы со связью один к одному

T1
ID, Status1_ID, Status2_ID, Ststus3_ID

T2
ID, Text1, Text2

когда сравнил планы запросов выяснил что в первом случае key lookup , во втором случае вместо него сик по таблице T2, но весят примерно одинаково

подскажите,
какие могут быть аргументы за и против такого разбиения?




Исходя из приведенных вами структуры таблицы, описания ее сути, запросов и планов можно сказать так:
а не добить ли вам и вторую на две, типа:

T1
ID, Status1_ID, Status2_ID, Ststus3_ID

T2_1
ID, Text1

T2_2
ID, Text2
15 май 15, 11:43    [17644066]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31779
fduch f.f.
какие могут быть аргументы за и против такого разбиения?
Да в общем во втором варианте обращение ко второй таблице есть аналог key lookup в первом варианте.

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

Так что я за первый вариант.
15 май 15, 11:44    [17644077]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20960
fduch f.f.
c фильтрацией по статусам в разных комбинациях
Какого рода фильтры? значение? список? диапазон? неравенство? Разные комбинации - разные типы наборов приблизительно равномерны?
15 май 15, 11:46    [17644092]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
Wizandr
Member

Откуда: Империя Добра
Сообщений: 37033
Akina
fduch f.f.
c фильтрацией по статусам в разных комбинациях
Какого рода фильтры? значение? список? диапазон? неравенство? Разные комбинации - разные типы наборов приблизительно равномерны?

в основном значения, есть также диапазон по дате
15 май 15, 11:53    [17644137]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация простой таблицы  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 20960
Wizandr
в основном значения

Попробуйте проанализировать наборы - возможно, один-два составных индекса окажутся эффективнее отдельных на большинстве запросов, чем индексы по отдельным полям.

Wizandr
есть также диапазон по дате

Что-то я не наблюдаю в структуре поля с датой...
15 май 15, 12:27    [17644403]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить