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

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

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

Ответить
ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

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

Сообщение ArtDen » 12 дек 2007, 16:54

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

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Сообщение WildSery » 12 дек 2007, 17:14

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

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Сообщение ArtDen » 12 дек 2007, 17:17

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

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 12 дек 2007, 17:26

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

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Сообщение ArtDen » 12 дек 2007, 17:28

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

Kotъ-Begemotъ
Сообщения: 250
Зарегистрирован: 25 июл 2007, 21:33

Сообщение Kotъ-Begemotъ » 12 дек 2007, 17:32

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

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

Сообщение Merlin » 12 дек 2007, 17:48

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

ArtDen
Сообщения: 53
Зарегистрирован: 25 ноя 2007, 10:54

Сообщение ArtDen » 12 дек 2007, 18:00

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

Ответить