Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно ли добавлять id пользователя в каждый индекс в базе? / 8 сообщений из 8, страница 1 из 1
05.02.2022, 01:11
    #40131825
Alew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
Привет! у меня концептуальнй вопрос. Если каждый пользователь приложения работает только со своими данными, означает ли это, что в каждый индекс первым полем надо добавить id пользователя, чтобы максимально локализовать операции над индексами?

Подразумевается, что селекты возвращают наборы, скажем по 100 строк, с десятком джойнов со справочниками. селекты содержат разные наборы фильтров и сортировку по одному полю.
...
Рейтинг: 0 / 0
05.02.2022, 06:07
    #40131847
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
Ну ежели у тя все запросы поголовно имеют

Код: sql
1.
where id = 12345 and ...



То, да, полезно иметь в индексах поле id
...
Рейтинг: 0 / 0
05.02.2022, 09:54
    #40131851
Alew
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
aleks222,

да, именно так. Спасибо за ответ!
...
Рейтинг: 0 / 0
05.02.2022, 11:21
    #40131861
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
Alew
Привет! у меня концептуальнй вопрос. Если каждый пользователь приложения работает только со своими данными, означает ли это, что в каждый индекс первым полем надо добавить id пользователя, чтобы максимально локализовать операции над индексами?

Подразумевается, что селекты возвращают наборы, скажем по 100 строк, с десятком джойнов со справочниками. селекты содержат разные наборы фильтров и сортировку по одному полю.

Вообще, не всегда именно первым полем. Иногда выгодно добавлять вторым полем или в include.
Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY
Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1. Может быть даже выгоднее окажется индекс field1 include UserID.
Но, не стоит забывать, что всё это стоит денег. И добавление лишних полей в индекс - приводит к его утяжелению. Так что если по field1 индекс достаточно селективный (и, например - есть жесткая корреляция между значением в поле field1 и UserID) - то можно ограничится индексом по field1, дополнительно построив статистику field1, UserID.
Так что в общем случае можно только сказать, что UserID желательно добавлять в индексы. Но не более.
...
Рейтинг: 0 / 0
05.02.2022, 11:25
    #40131862
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
uaggster
Alew
Привет! у меня концептуальнй вопрос. Если каждый пользователь приложения работает только со своими данными, означает ли это, что в каждый индекс первым полем надо добавить id пользователя, чтобы максимально локализовать операции над индексами?

Подразумевается, что селекты возвращают наборы, скажем по 100 строк, с десятком джойнов со справочниками. селекты содержат разные наборы фильтров и сортировку по одному полю.

Вообще, не всегда именно первым полем. Иногда выгодно добавлять вторым полем или в include.
Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY
Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1. Может быть даже выгоднее окажется индекс field1 include UserID.
Но, не стоит забывать, что всё это стоит денег. И добавление лишних полей в индекс - приводит к его утяжелению. Так что если по field1 индекс достаточно селективный (и, например - есть жесткая корреляция между значением в поле field1 и UserID) - то можно ограничится индексом по field1, дополнительно построив статистику field1, UserID.
Так что в общем случае можно только сказать, что UserID желательно добавлять в индексы. Но не более.


Осподе, милосердный! Бред то какой.
...
Рейтинг: 0 / 0
05.02.2022, 11:25
    #40131863
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
Перечитал что написал выше, не очень понравилось :-)
В общем так:
Индекс вида field1, UserID или field1 include UserID - может оказаться существенно более универсальным, чем UserID, field1, а работать будет не хуже, т.к. см. выше.
...
Рейтинг: 0 / 0
05.02.2022, 11:26
    #40131864
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
aleks222
uaggster
пропущено...

Вообще, не всегда именно первым полем. Иногда выгодно добавлять вторым полем или в include.
Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY
Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1. Может быть даже выгоднее окажется индекс field1 include UserID.
Но, не стоит забывать, что всё это стоит денег. И добавление лишних полей в индекс - приводит к его утяжелению. Так что если по field1 индекс достаточно селективный (и, например - есть жесткая корреляция между значением в поле field1 и UserID) - то можно ограничится индексом по field1, дополнительно построив статистику field1, UserID.
Так что в общем случае можно только сказать, что UserID желательно добавлять в индексы. Но не более.


Осподе, милосердный! Бред то какой.

Дододо. Конечно бред.
...
Рейтинг: 0 / 0
05.02.2022, 17:56
    #40131916
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужно ли добавлять id пользователя в каждый индекс в базе?
uaggster
Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY
Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1.
Для такого предиката вообще без разницы.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Нужно ли добавлять id пользователя в каждый индекс в базе? / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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