Страница 1 из 1

Создание индекса для ключевых полей

Добавлено: 12 дек 2007, 16:54
ArtDen
Правильно ли я понимаю, что FB 2 самостоятельно создаёт индексы для ключевых полей (как для главного, так и для внешнего ключа) и вручную создавать индексы для этих полей уже не надо?

Добавлено: 12 дек 2007, 17:14
WildSery
Да. И не только FB2.
Индекс используется для контроля уникальности значений и ссылочной целостности вне транзакций (индекс видит все версии), потому никакого PK и FK без индекса быть не может.

Добавлено: 12 дек 2007, 17:17
ArtDen
А почему тогда FB разрешает создавать аналогичный индекс для того-же столбца?

Добавлено: 12 дек 2007, 17:26
Kotъ-Begemotъ
ArtDen писал(а):А почему тогда FB разрешает создавать аналогичный индекс для того-же столбца?
Ну, пальцы в розетку тоже никто явно не запрещает совать :) Например потому что мне может понадобится DESC индекс по этому же полю для других запросов. Почему нет?

Добавлено: 12 дек 2007, 17:28
ArtDen
Kotъ-Begemotъ писал(а):Ну, пальцы в розетку тоже никто явно не запрещает совать :) Например потому что мне может понадобится DESC индекс по этому же полю для других запросов. Почему нет?
Так я имею ввиду, что позволено создание полностью аналогичного индекса, но с другим именем

Добавлено: 12 дек 2007, 17:32
Kotъ-Begemotъ
ArtDen писал(а):Так я имею ввиду, что позволено создание полностью аналогичного индекса, но с другим именем
Ну, это надо у разработчиков FB спросить. Вообще в FB с 1.5 и выше многие "вольности" уже не допускаются, и это, имхо - правильно. По идее надо бы запретить создание индекса полностью дублирующего индекс создаваемый при ограничении по FK. Хотя вот какой момент - а вдруг я в определённый момент решу удалить ограничение FK? Индекс создаваемый автоматически удалится, а созданый мной - останется. Может такое быть? Запросто.

Добавлено: 12 дек 2007, 17:48
Merlin
ArtDen писал(а): Так я имею ввиду, что позволено создание полностью аналогичного индекса, но с другим именем
Потому что а какое его, сервера, собачье дело, почему я так хочу. Хочу и всё. В сложных структурно базах до сих пор частенько приходится писать планы руками, про старые времена я вообще молчу. Когда на 4-ке работали, кодер, включивший в приложение непланированный запрос, у меня, например, рисковал 10% зарплаты. А пользовать в планах системно сгенерированные имена - игра в гусарскую рулетку, они могут и измениться при альтерении метаданных. Начиная с полуторки уже не так актуально в общем-то, имя системного индекса берётся с имени констрейнта. Но баз, развивающихся десятилетиями и переползающих с версии на версию - вагон и маленькая тележка. Да и почти не влияет дубль на быстродействие, если он уникальный или близок к уникальности.

Добавлено: 12 дек 2007, 18:00
ArtDen
Merlin писал(а):...А пользовать в планах системно сгенерированные имена - игра в гусарскую рулетку, они могут и измениться при альтерении метаданных...
Спасибо за информацию! Теперь ясно, откуда ноги у таких индексов растут :)