powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / update используя индекс
6 сообщений из 6, страница 1 из 1
update используя индекс
    #39542966
SlobAn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.

Есть простенький апдейт:
Код: sql
1.
2.
3.
4.
5.
6.
update tab_1 d
set g4=(select zn101
        from    data_9000 t
        where   t.god=2016 and
                d.answer_q2=t.answer_q2 and
                d.vyborka=t.vyborka)



Щас в таблице tab_1 создан индекс по полям VYBORKA,ANSWER_Q2.

Но после выполнения в Plan Analizer пишет:
PLAN (D NATURAL)

можно ли как то явно указать чтоб использовал этот индекс или какой индекс нужно создать, чтоб апдейтил используя его?
...
Рейтинг: 0 / 0
update используя индекс
    #39542969
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlobAn,

если версия FB позволяет попробовать переписать через MERGE
...
Рейтинг: 0 / 0
update используя индекс
    #39542971
Фотография artemana
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SlobAnЗдравствуйте.

Есть простенький апдейт:
Код: sql
1.
2.
3.
4.
5.
6.
update tab_1 d
set g4=(select zn101
        from    data_9000 t
        where   t.god=2016 and
                d.answer_q2=t.answer_q2 and
                d.vyborka=t.vyborka)



Зачем при изменении ВСЕХ записей tab_1 d использовать индекс. Индекс используется когда изменяются (читаются, удаляются) только часть записей удовлетворяющих условию. То есть, если бы update был с where, например
Код: sql
1.
update tab_1 d....where VYBORKA=1.


Для такого же запроса как у Вас нужен индекс в таблице data_9000 по полям god,answer_q2 ,vyborka
...
Рейтинг: 0 / 0
update используя индекс
    #39543082
KreatorXXI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисSlobAn,

если версия FB позволяет попробовать переписать через MERGE

Или через Execute Block. По-моему, проще. Особенно, если Merge раньше не использовал.
...
Рейтинг: 0 / 0
update используя индекс
    #39543415
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
artemanaSlobAnЗдравствуйте.

Есть простенький апдейт:
Код: sql
1.
2.
3.
4.
5.
6.
update tab_1 d
set g4=(select zn101
        from    data_9000 t
        where   t.god=2016 and
                d.answer_q2=t.answer_q2 and
                d.vyborka=t.vyborka)



Зачем при изменении ВСЕХ записей tab_1 d использовать индекс. Индекс используется когда изменяются (читаются, удаляются) только часть записей удовлетворяющих условию. То есть, если бы update был с where, например
Код: sql
1.
update tab_1 d....where VYBORKA=1.


Для такого же запроса как у Вас нужен индекс в таблице data_9000 по полям god,answer_q2 ,vyborka

Ха. Не перевелись ещё люди, читающие вопрос перед тем как ответить, это радует :)
...
Рейтинг: 0 / 0
update используя индекс
    #39543883
SlobAn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
действительно merge сработало быстрее. Всем спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / update используя индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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