Я хотел бы отметить, что это:
select count(*) from tablename where userid=:userid
имеет тот же эффект, что и ваше второе решение, с тем преимуществом, что count(*)
однозначно означает «считать все строки».
*
в COUNT(*)
не распространяется на все столбцы, то есть *
в SELECT COUNT(*)
не совпадает с SELECT *
. Поэтому вам не нужно беспокоиться о производительности при написании COUNT(*)
Недостаток написания COUNT(1)
в том, что он менее понятен: что вы имели в виду? Буквенный (1
) может выглядеть как строчная буква L (это: l
) в некоторых шрифтах.