автоматические индексы по внешним ключам

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
xaoc
Сообщения: 5
Зарегистрирован: 21 фев 2008, 15:54

автоматические индексы по внешним ключам

Сообщение xaoc » 21 фев 2008, 16:06

Если внешний ключ является одним полем, например, целым,
То FB создает автоматический индекс по этому полю.
Но если я хочу составной индекс по этому же полю и плюс какое-нибудь другое., то мне придется создавать отдельный индекс.
Но два индекса слишком накладно ведь для внешнего ключа пригоден и второй составной индекс. Я знаю что автоматический индекс можно определить как составной если отрtдактировать
таблицу RDB$INDEX_SEGMENTS и еще одну таблицу. Тогда в итоге мы получим один индекс, но является ли это правильным?
И как вообще решать такие ситуации?

Merlin
Динозавр IB/FB
Сообщения: 1502
Зарегистрирован: 27 окт 2004, 11:44

Сообщение Merlin » 21 фев 2008, 16:55

Отредактировать rdb$pages и rdb$transactions

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 21 фев 2008, 16:57

Я знаю что автоматический индекс можно определить как составной если отрtдактировать
таблицу RDB$INDEX_SEGMENTS и еще одну таблицу.
ну-ну. может лучше файл базы сразу удалить, и не мучиться?
Но два индекса слишком накладно
накладно как - мучительно больно осознавать что в базе что-то "лишнее", медленнее работает, или еще что?

xaoc
Сообщения: 5
Зарегистрирован: 21 фев 2008, 15:54

Сообщение xaoc » 22 фев 2008, 10:19

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

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Сообщение stix-s » 22 фев 2008, 11:04

xaoc писал(а):накладно в том смысле, что создается два индекса, там где на мой взгляд можно обойтись одним. И наверняка поддержка двух индексов требует больше ресурсов чем поддержка одного. Я конечно могу быть не прав, вот это я и хочу понять
да, больше ресурсов требуется, но насколько тебя это волнует?
хаос, он и в африке хаос :)

xaoc
Сообщения: 5
Зарегистрирован: 21 фев 2008, 15:54

Сообщение xaoc » 22 фев 2008, 14:25

если можно вписаться в один индекс вместо двух то почему бы не сделать один, ведь может быть это не одна таблица, а например около 200. И на одно таблице может быть несколько внешних ключей тогда число индексов будет уже велико.

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 фев 2008, 16:01

если можно вписаться в один индекс вместо двух
не "можно", и тебе об этом сказали.

прежде чем вещать про "накладно", выяснил бы, сколько занимает доп. индекс, и насколько он накладен для скорости работы.
а например около 200. И на одно таблице может быть несколько внешних ключей тогда число индексов будет уже велико.
убиться можно. значит, надо все внешние ключи удалить? :)

xaoc
Сообщения: 5
Зарегистрирован: 21 фев 2008, 15:54

Сообщение xaoc » 22 фев 2008, 16:21

тогда буду выяснять

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 22 фев 2008, 17:01

тогда буду выяснять
я бы посоветовал в данный момент вообще ничего не выяснять. Просто принять авто-индексы по ПК и ФК как данность, и строить свои индексы, которые действительно нужны, а не просто "так показалось" или "где-то слышал".

то есть, не надо пытаться экономить там, где эффекта от экономии почти не будет (может и вообще не будет, это зависит от объемов данных).

xaoc
Сообщения: 5
Зарегистрирован: 21 фев 2008, 15:54

Сообщение xaoc » 26 фев 2008, 10:05

согласен, это вероятно у меня от общения c не SQL - ным
доступом к базам Pervasive

Ответить