В SQL NULL = NULL - false, обычно вам нужно использовать IS NULL:
SELECT CASE WHEN MAX(id) IS NULL THEN 0 ELSE (MAX(id) + 1) END FROM words
Но, если вы хотите количество строк, вы должны просто использовать count(id)
, так как ваше решение даст 10, если ваши строки (0,1,3,5,9), где оно должно дать 5.
Если вы можете гарантировать, что у вас всегда будут идентификаторы от 0 до N, max (id) +1 может быть быстрее в зависимости от реализации индекса (возможно, быстрее пройти по правой стороне сбалансированного дерева а не пересекать целое дерево, считая.
Но это очень зависит от реализации, и я бы не советовал полагаться на нее, не в последнюю очередь потому, что она привязывает вашу производительность к конкретной СУБД.