![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Оптимизировать запрос [FB 2.0]
Дмитрий Белькевич © (2010-06-07 19:43:00)Делаю ХП, можно ли как-то переписать более оптимально часть процедуры:
if (exists(select STUDY_UID
from STUDIES
where STUDY_UID = :STUDY_UID and
STUDIES.STUDY_FILES_COUNTER = 0)) then
delete from STUDIES
where STUDY_UID = :STUDY_UID;
Процедура должна удалять запись с ключом STUDY_UID, если поле STUDY_FILES_COUNTER равно нулю.
turbouser (2010-06-15 17:22:00) [1]
> Petr V. Abramov © (15.06.10 15:53) [10]
я и не говорю, что uq и pk одно и то же :)
Petr V. Abramov (2010-06-15 15:53:00) [2]
> turbouser © (13.06.10 01:28) [8]
вроде бы как uq допускает null`ы, а pk - нет. хотя как в fb сделано - не помню.
Дмитрий Белькевич (2010-06-13 01:49:00) [3]
> в данном случае нет разницы. FB автоматом создает индекс
> для PK
Я уж испугался, что в фб какой-то новый тип ключей появился :)
turbouser (2010-06-13 01:28:00) [4]UQ - уникальный индекс, PK - первичный ключ
в данном случае нет разницы. FB автоматом создает индекс для PK
Дмитрий Белькевич (2010-06-13 00:44:00) [5]Знаю pk, знаю fk, uq не знаю.
Кщд (2010-06-11 10:06:00) [6]Дмитрий Белькевич (10.06.10 12:04) [5]
ключ ключу рознь
UQ и PK - несколько разные вещи, не так ли?
Дмитрий Белькевич (2010-06-10 12:04:00) [7]>если, конечно, STUDY_UID не PK, о чем ни слова)
>>запись с ключом STUDY_UID
Кщд (2010-06-08 08:37:00) [8]так
if (exists(select STUDY_UID
from STUDIES
where STUDY_UID = :STUDY_UID and
STUDIES.STUDY_FILES_COUNTER = 0)) then
delete from STUDIES
where STUDY_UID = :STUDY_UID;
в общем случае не эквивалентно:
delete from STUDIES
where STUDY_UID = :STUDY_UID and
STUDY_FILES_COUNTER = 0;
если, конечно, STUDY_UID не PK, о чем ни слова)
Дмитрий Белькевич (2010-06-07 20:59:00) [9]Угу, уже [2] сам сделал. Что-то ступил сразу. Спасибо за обсуждение.
b z (2010-06-07 20:47:00) [10]А просто
delete from STUDIES
where STUDY_UID = :STUDY_UID and
STUDY_FILES_COUNTER = 0;
не работает?
Виталий Панасенко(дом) (2010-06-07 19:49:00) [11]а for отменили?