Há algum ponto em usar MySQL "LIMIT 1" ao consultar na chave primária/campo exclusivo?
Não é uma boa prática usar
LIMIT 1
ao consultar com critérios de filtro contra uma chave primária ou restrição exclusiva. Uma chave primária, ou restrição exclusiva, significa que há apenas uma linha/registro na tabela com esse valor, apenas uma linha/registro será retornada. É contraditório ter LIMIT 1
em uma chave primária/campo exclusivo - alguém que mantiver o código mais tarde pode confundir a importância e adivinhar seu código. Mas o indicador final é o plano de explicação:
explain SELECT t.name FROM USERS t WHERE t.userid = 4
... retorna:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
...e:
explain SELECT t.name FROM USERS t WHERE t.userid = 4 LIMIT 1
... retorna:
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
-----------------------------------------------------------------------------------------------------
1 | SIMPLE | users | const | PRIMARY | PRIMARY | 4 | const | 1 |
Conclusão
Não há diferença, não há necessidade. Parece ser otimizado neste caso (apenas pesquisando na chave primária).
E um campo indexado?
Um campo indexado não garante a exclusividade do valor que está sendo filtrado, pode haver mais de uma ocorrência. Então
LIMIT 1
faria sentido, supondo que você deseja retornar uma linha.