В его нынешнем виде ...
WHERE LTRIM(RTRIM(Code)) = @Code;
использование ltrim (rtrim (.. предотвратит использование индекса.
В идеале у вас должен быть результат ltrim(rtrim(Code))
в качестве индексированного столбца, чтобы можно было использовать индекс в предложении WHERE. Это ускорит процесс.
Установка @bFlag = COUNT(id)
, когда @bFlag
- это int, а COUNT(id)
int - не так уж приятно! Вам действительно следует использовать CASE WHEN COUNT(id) > 0 THEN 1 ELSE 0 END
или иное.
Однако более эффективно использовать подход IF EXISTS
, поскольку это приведет к короткому замыканию, как только будет найдена одна строка, соответствующая вашим критериям.
т.е.
DECLARE @bFlag bit
SELECT @bFlag = 0
IF EXISTS (SELECT 'x' FROM tbl1 where Code= @Code ) SELECT @bFlag = 1
-- etc.
RETURN @bFlag