Прямо сейчас, используя SQLite, я пишу ниже (я могу перейти к mysql или ms sql)
command.CommandText = "SELECT count(reset_key) user_data WHERE reset_key=@key;";
Это работает, но есть ли более оптимизированный или более чистый способ?
Это самый чистый, самый оптимизированный способ. Убедитесь, что на reset_key есть индекс, и он будет очень-очень быстрым.
reset_key
command.CommandText = "SELECT TOP 1 1 FROM user_data WHERE reset_key=@key" if (commmand.ExecuteScalar() == null) { //code for no matches here }
SQLite поддерживает предложение LIMIT. Это может помочь.
РЕДАКТИРОВАТЬ: я не знаю синтаксис SQLite. Но в смысле SQL это будет выглядеть как
Select 1 From user_Data Where reset_key = @key LIMIT 1
Попробуйте
Select Case When Exists (Select * From user_Data Where reset_key = @key) Then 1 Else 0 End