powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Избыточность индексов в таблице
5 сообщений из 5, страница 1 из 1
Избыточность индексов в таблице
    #40060072
Фотография wsnet
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, есть таблицы:

Код: plsql
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.
create table softmaster.t1
(
  id integer primary key
);

create table softmaster.t2
(
  id integer primary key
);

create table softmaster.usl
(
  id_usl integer,
  id_model integer 
);

alter table softmaster.usl
  add constraint pk_usl_id_usl_id_model primary key (id_usl, id_model)
  using index;
  
alter table softmaster.usl
  add constraint fk_usl_id_usl foreign key (id_usl)
  references softmaster.t2 (id);
  
alter table softmaster.usl
  add constraint fk_usl_id_model foreign key (id_model)
  references softmaster.t1 (id);



Вопрос, не избыточно ли число индексов в таблице?
Сейчас на два поля 3 индекса.

Для работы с таблицей это в принципе нормальная ситуация?
Индексы не будут мешать друг другу?
...
Рейтинг: 0 / 0
Избыточность индексов в таблице
    #40060083
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wsnet,

Тут один индекс и три констрейнта. Если из таблицы t1 не предвидится удалений (либо они будут очень редкими), то текущая картинка вполне нормальная.
Если же из t1 записи будут удаляться относительно часто, то можно создать ещё один индекс по id_model, чтобы проверка по констрейнту отрабатывала быстро. А ежели в таблице usl будут сотни миллионов записей и индекс по id_model станет проблемой производительности, то можно прибить индекс+констрейнт, добавив какое-нить поле типа ref_count в t1 и следить за кол-вом ссылок на t1... что тоже может стать ещё большей проблемой производительности - всё зависит от.
...
Рейтинг: 0 / 0
Избыточность индексов в таблице
    #40060084
wsnet
Вопрос, не избыточно ли число индексов в таблице?
Сейчас на два поля 3 индекса.

Для работы с таблицей это в принципе нормальная ситуация?

Можно сделать create table softmaster.usl (...) organization index. Индексов всё равно будет 3, но primary key будет совмещён с таблицей, что сэкономит немного места и, возможно, немного i/o.
Имхо, для реализации many-to-many, 3 индекса -- нормальное явление.

wsnet
Индексы не будут мешать друг другу?

Какого рода взаимные помехи предполагаются? Вообще говоря, несколько индексов, и часто гораздо больше 3, для таблицы -- ничего сверхъестественного.

Upd. Том Кайт настоятельно рекомендует индексировать колонки, по которым делается ссылочное ограничение, так что
Код: plsql
1.
2.
create index idx_usl_id_usl on softmaster.usl(id_usl);
create index idx_usl_id_model on softmaster.usl(id_model);
...
Рейтинг: 0 / 0
Избыточность индексов в таблице
    #40060093
delphinotes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хливкие Шорьки
Код: plsql
1.
create index idx_usl_id_usl on softmaster.usl(id_usl)


вот как раз этот индекс будет избыточным, т.к. уже есть индекс pk_usl_id_usl_id_model с полем id_usl на первом месте в индексе
...
Рейтинг: 0 / 0
Избыточность индексов в таблице
    #40060095
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос об индексах невозможно квалифицированно решить в отрыве от запросов к таблице.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Избыточность индексов в таблице
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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