Разница между вашими двумя утверждениями заключается в вопросе "сколько сделано в чистом SQL, и сколько сделано движком, выполняющим процедуры / сценарии и т. Д. (Я хотел бы сказать, что делает база данных и что находится за пределами базы данных, но в хранимом процессе обе части обрабатываются базой данных.)
В вашем примере первый оператор использует SQL для извлечения электронной почты одного члена. В доступе к таблице используется первичный ключ и связанный с ним уникальный индекс, поэтому он должен быть очень быстрым даже для большой таблицы. EMail передается за пределы SQL, а затем выполняется сравнение в сценарии.
Во втором описании происходит почти то же самое. MemberID снова используется для доступа к уникальной записи, затем сравнивается электронное письмо и логический результат передается обратно за пределы SQL.
Следовательно, производительность для вашего примера должна быть примерно одинаковой.
Будут разные соображения (например, как отметил MikyD), когда нужно перенести более одного значения за пределы SQL и выполнить более сложное сравнение (например, выбрать большое количество писем с использованием SQL, а затем выполнить сравнение в скрипте с чем-то вроде Email IN (Select ..)
). Тогда обычно предпочтительнее выполнять как можно больше работы в SQL, передавать наименьшее количество данных между SQL и не-SQL и позволить базе данных определить наиболее эффективный способ получения данных.