Estou usando um banco de dados MySQL e realizo vários selects como estes:
SELECT MyField FROM MyTable WHERE MyKey = 'some_value';
O objetivo é recuperar um valor de campo se a linha correspondente existir. MyKey
é a única chave na tabela e é indexada.
Minha pergunta é: há algum benefício ou desvantagem em adicionar LIMIT 0,1
à minha declaração?
Se
MyKey
forNOT NULL
( consulte a resposta de Jannes ) e definido como umUNIQUE
índice na tabela DDL, o único benefício de adicionarLIMIT 0,1
é a clareza potencial para os visualizadores da consulta de que isso retornará apenas um único resultado. Sem que eles tenham que olhar para o DDL para saber que ele é único. No entanto, outros designers de banco de dados estarão olhando para o DDL de qualquer maneira.Se houver alguma sobrecarga de adição
LIMIT 0,1
, seria muito, muito minúsculo.De qualquer forma, adicioná-lo seria com você. Você precisa de clareza (com que frequência os usuários visualizam suas consultas)?
Somando-se aos pontos levantados em outras respostas, pode haver uma diferença real!
Um índice UNIQUE garante APENAS uma única linha de resultado se a coluna for definida como NOT NULL ou se sua cláusula WHERE testar um valor que não seja NULL (o que ocorre em seu exemplo). Então
pode retornar várias linhas, enquanto adicionar LIMIT 0,1 restringiria isso a uma linha (aleatória).