Помогите с запросом удаления

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

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

Ответить
wolk
Сообщения: 4
Зарегистрирован: 10 авг 2007, 07:52

Помогите с запросом удаления

Сообщение wolk » 28 сен 2007, 03:54

Всем доброго времени суток.
У меня следующая ситуация:
Есть 2 таблицы master и docum.
В таблице master есть строки к которым относятся несколько строк из таблицы docum.
Мне надо удалить все строки из таблицы docum, которые принадлежат к строкам в таблице master, с текстом в поле notereg начинающимся со слов "возв".
Подойдет этот запрос???

delete
from docum
where docum.id in (select docum.id from master, docum
where master.notereg starting 'возв' and docum.id=master.id)


Я его запускал, он вроде работает, но я до конца не уверен.

AnryGTR
Сообщения: 116
Зарегистрирован: 15 янв 2007, 15:58

Сообщение AnryGTR » 28 сен 2007, 07:10

всё нормально запрос подойдёт...тем более ты его сам поверил! :wink:

belov-evgenii
Сообщения: 52
Зарегистрирован: 28 сен 2007, 10:19

Сообщение belov-evgenii » 28 сен 2007, 11:03

to wolk
Коллега из СП?
Вот так лучше будет

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

delete from docum
where exists (select docum.id
              from docum join master on docum.id = master.id
              where master.notereg starting with 'возв')

Slavik
Сообщения: 115
Зарегистрирован: 17 янв 2007, 11:52

Сообщение Slavik » 29 сен 2007, 23:00

Автору: Запрос логически верен ("но я до конца не уверен" :) ). Если нужна скорость выполнения, то сравни планы обоих запросов и выбери тот, который больше нравится. А ещё лучше delete выполнять в процедуре или блоке в цикле for select.

belov-evgenii
Сообщения: 52
Зарегистрирован: 28 сен 2007, 10:19

Сообщение belov-evgenii » 29 сен 2007, 23:27

Да разовая операция, поэтому пофигу

Ответить