No MySQL, ao invés de OR ou BETWEEN, use IN()

É comum você precisar fazer uma query no MySQL que busque mais de um registro, especificando os IDs. Na maioria das vezes, por desconhecimento do funcionamento do índice, o programador utiliza SELECTs que não são muito otimizados e podem gerar uma carga desnecessária para o banco de dados.

Supondo que você precise pegar os registros de ID 1,2,3,4,5 e 6 do banco.

QUERY #1:
SELECT campo FROM tabela WHERE id=1 OR id=2 OR id=3 OR id=4 OR id=5 OR id=6

QUERY #2:
SELECT campo FROM tabela WHERE id BETWEEN 1 AND 6

QUERY #3 (MELHOR!):
SELECT campo FROM tabela WHERE id IN (1,2,3,4,5,6)

Na verdade não é que as outras duas queries estão erradas, mas não vão utilizar o índice corretamente. O IN() é a melhor forma para buscar esses registros.

Com isso, com o PHP o melhor a utilizar é a função range() para montar a query.

$query = “SELECT campo FROM tabela WHERE id IN (“.implode(“,”,range(1,6)).”)”;

:-)

Deixe um comentário

Arquivado em MySQL