Hosted by uCoz
Лучше использовать ROWNUM, чем SELECT COUNT(*)

Автор:Sergey Rigkov rijkov@mail.ru
В некоторых случаях необходимо узнать количество строк, удовлетворяющих определенным условиям. Например, при создании новой строки, необходимо проверить на уже существующую строку, с определенным значением некоторого поля. Можно конечно использовать SELECT COUNT(*) INTO :LL_COUNT FROM TABLE_NAME WHERE COLUMN_NAME=:ARG, IF ll_Count > 0 THEN // Действия при наличии строки ... но при этом, будет произведена выборка всех строк, для которых выполнится условие WHERE и выполнится агрегация Поэтому я советую использовать ROWNUM SELECT TABLE_NAME_ID INTO :LL_ID FROM TABLE_NAME WHERE COLUMN_NAME=:ARG AND ROWNUM < 2 IF SQLCA.SQLNRows <> 0 THEN // Действия ... Так Вы производите выборку, которая ограничится только одной строкой, что иногда может существенно уменьшить количество читаемых блоков ORACLE и при этом вы сразу получите PK найденной записи