Благо перед праздниками удалось выкроить свободного времени, провел ревизию своего утверждения про функцию ISEMPTY.
При её вызове Навижен генерит запрос вида
Код:
SELECT TOP 1 NULL FROM TABLE WHERE FIELD1=@P1
в отличие от FIND, при вызове которой запрос выгядит примерно вот так
Код:
SELECT TOP 1 * FROM TABLE WHERE FIELD1=@P1 ORDER BY <CURRENTKEY FIELDS>
Собственно именно об этой звездочке и об ORDER BY я и говорил, призывая не использовать FIND для проверки набора данных на пустоту.
select TOP 1 NULL свободен от этих недостатков, и в смысле использования индексов работает аналогично COUNT, но, конечно, ограничивается первой попавшейся записью в индексе и концептуально лучше.
К своему сожалению я не могу сейчас повторить ситуацию, в которой на моей базе COUNT был лучше чем ISEMPTY, поэтому:
1. Снимаю свои призывы использовать COUNT
2. Оставляю в силе рекомендацию не использовать FIND
3. Предлагаю использовать ISEMPTY
4. На мой взгляд проводить эксперименты с производительностью лучше не на тестовых примерах а на собственных данных, от их организации и наполнения многое зависит.
5. Посыпать голову пеплом пока не буду, поскольку было такое... ("у меня все ходы записаны" (С), профайлер запускался и результаты запротоколированы, ошибки не было). Повторится ситуация - отпишу обязательно.
Модератору: на мой взгляд, обсуждение использования COUNT лучше вынести в отдельную тему форума, начиная с моей фразы "Но я не об этом, вот о чем:"
PS. tyrex'у - респект за неравнодушное отношение.