|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
Привет! у меня концептуальнй вопрос. Если каждый пользователь приложения работает только со своими данными, означает ли это, что в каждый индекс первым полем надо добавить id пользователя, чтобы максимально локализовать операции над индексами? Подразумевается, что селекты возвращают наборы, скажем по 100 строк, с десятком джойнов со справочниками. селекты содержат разные наборы фильтров и сортировку по одному полю. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 01:11 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
Ну ежели у тя все запросы поголовно имеют Код: sql 1.
То, да, полезно иметь в индексах поле id ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 06:07 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
aleks222, да, именно так. Спасибо за ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 09:54 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
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 желательно добавлять в индексы. Но не более. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 11:21 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
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 желательно добавлять в индексы. Но не более. Осподе, милосердный! Бред то какой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 11:25 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
Перечитал что написал выше, не очень понравилось :-) В общем так: Индекс вида field1, UserID или field1 include UserID - может оказаться существенно более универсальным, чем UserID, field1, а работать будет не хуже, т.к. см. выше. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 11:25 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
aleks222 uaggster пропущено... Вообще, не всегда именно первым полем. Иногда выгодно добавлять вторым полем или в include. Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1. Может быть даже выгоднее окажется индекс field1 include UserID. Но, не стоит забывать, что всё это стоит денег. И добавление лишних полей в индекс - приводит к его утяжелению. Так что если по field1 индекс достаточно селективный (и, например - есть жесткая корреляция между значением в поле field1 и UserID) - то можно ограничится индексом по field1, дополнительно построив статистику field1, UserID. Так что в общем случае можно только сказать, что UserID желательно добавлять в индексы. Но не более. Осподе, милосердный! Бред то какой. Дододо. Конечно бред. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 11:26 |
|
Нужно ли добавлять id пользователя в каждый индекс в базе?
|
|||
---|---|---|---|
#18+
uaggster Это зависит еще и от набора значений в том поле, которое участвует в предикате where UserID = XXX and field1 = YYYY Если индекс по полю field1 более селективный, то field1, UserID будет выгоднее, чем UserID, field1. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2022, 17:56 |
|
|
start [/forum/topic.php?fid=46&fpage=3&tid=1683866]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
others: | 13ms |
total: | 133ms |
0 / 0 |