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

IB6.0 и индексы в SELECT, вложененом в UPDATE

Добавлено: 26 окт 2006, 15:58
dr0nix
Пример запроса:

Код: Выделить всё

update Workplaces wp
set wp.MaxAttId =
      (select
         max(AttId)
       from
         Analog
       where
         WorkplacesId = wp.WorkplacesId
      )
Получаем план:
PLAN (ANALOG NATURAL) PLAN (WP NATURAL)

индекс на WorkplacesId почему-то не используется.

В Firebird - все нормально, индекс используется.

Если пытаюсь явно указать оптимизатору план с индексом, то получаю
ошибку:
index cannot be used in the specified plan.
index RDB$FOREIGN174 cannot be used in the specified plan.

Можно ли как-нибудь заставить IB6.0 использовать индекс?

Добавлено: 26 окт 2006, 17:42
WildSery
:idea: меняй сервер.
6.0 глючное фуфло.

Добавлено: 26 окт 2006, 18:11
CyberMax
WildSery писал(а):6.0 глючное фуфло.
Я бы на вашем месте не стал называть прямого предка Firebird'а фуфлом... :roll:

2 dr0nix. Чем раньше перейдешь на более стабильную версию, тем меньше проблем получишь. И не только с использованием индексов...

Добавлено: 26 окт 2006, 18:38
WildSery
CyberMax писал(а):Я бы на вашем месте не стал называть прямого предка Firebird'а фуфлом... :roll:
Уже на "вы"? :P
Из гнилого яблока вырастает здоровая яблоня.

Добавлено: 26 окт 2006, 22:51
kdv
Можно ли как-нибудь заставить IB6.0 использовать индекс?
можно как-нибудь осознать, что IB 6.0 выпущен в 2000 году? 6 лет уже серверу, чего вы от него хотите? Тем более от пре-релиза.
www.ibase.ru/devinfo/allversions.htm

Добавлено: 27 окт 2006, 01:20
dr0nix
Сменить сервер нет возможности, но все равно спасибо

Добавлено: 27 окт 2006, 14:18
WildSery
Как это нет :shock: А почему?

Добавлено: 27 окт 2006, 18:45
ud
религия не позволяет...