Melhor collation para MySQL com PHP: tutorial completo 2025

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Introdução: por que a collation no MySQL não é apenas um capricho de esteta

Todo desenvolvedor que já configurou um banco de dados para um projeto em PHP já se perguntou: "Qual collation (comparação/ordenação) devo escolher?". No Stack Overflow, essa pergunta acumula milhares de visualizações, e as respostas muitas vezes confundem iniciantes. À primeira vista, parece que não há diferença — desde que funcione. Mas, na prática, a escolha da collation afeta a velocidade das buscas, a precisão da ordenação (especialmente com o português) e até mesmo a exibição de caracteres especiais.

Neste tutorial, vamos entender qual collation para MySQL com PHP é realmente a melhor em 2025 e por quê. Você aprenderá a evitar erros clássicos e configurar seu banco de dados para que o site voe e os dados não virem caracteres estranhos.

O que é collation em termos simples?

Collation é um conjunto de regras que o MySQL usa para comparar e ordenar strings. Ela está diretamente ligada ao charset (codificação). Enquanto a codificação (como utf8mb4) define como os caracteres são armazenados, a collation determina como eles são comparados: se diferencia maiúsculas de minúsculas, como ordenar letras acentuadas (como "é" e "e"), e se considera "A" e "a" como iguais.

Os principais tipos de collation para utf8mb4:

  • utf8mb4_general_ci — antiga, rápida, mas com ordenação simplificada (nem sempre lida corretamente com alguns idiomas).
  • utf8mb4_unicode_ci — mais precisa, baseada no padrão Unicode, mas era mais lenta antes do MySQL 8.0.
  • utf8mb4_0900_ai_ci — a mais recente (MySQL 8.0+), a mais precisa e rápida ao mesmo tempo.

Por que não usar collations antigas?

Muitos projetos legados ainda usam utf8_general_ci ou até latin1_swedish_ci. Se você está criando um novo projeto em PHP, evite-as como fogo. Veja por quê:

  • Problemas com o português: letras acentuadas como "é", "ê" e "ã" podem ser ordenadas incorretamente.
  • Conjunto limitado de caracteres: codificações antigas não suportam emojis e caracteres raros.
  • Desempenho: collations modernas são otimizadas e funcionam mais rápido.

Melhor collation em 2025: utf8mb4_0900_ai_ci

Se o seu MySQL é versão 8.0 ou superior (como a maioria hoje), a melhor escolha é utf8mb4_0900_ai_ci. Detalhando:

  • utf8mb4 — codificação que suporta 4 bytes por caractere (emojis, ideogramas raros).
  • 0900 — baseada no padrão Unicode 9.0 (a versão mais atual).
  • ai — accent insensitive (insensível a acentos: "café" e "cafe" são iguais).
  • ci — case insensitive (insensível a maiúsculas/minúsculas: "Olá" e "olá" são iguais).

Essa collation oferece máxima precisão e velocidade. Se você precisar diferenciar maiúsculas de minúsculas ou acentos, use utf8mb4_0900_as_cs, mas para 99% dos projetos web, ai_ci é o ideal.

E se eu tiver MySQL 5.7 ou inferior?

Nesse caso, sua escolha é utf8mb4_unicode_520_ci (ou simplesmente utf8mb4_unicode_ci). Ela não é tão rápida quanto a 0900, mas é muito mais precisa que a general_ci. Se você tem uma versão antiga, atualize o quanto antes, mas enquanto isso, use utf8mb4_unicode_ci.

Tutorial passo a passo: configurando collation no seu projeto PHP

Vamos configurar o banco de dados corretamente. Mostrarei com PDO — a forma moderna e segura de trabalhar com MySQL em PHP.

Passo 1: Criar o banco de dados com a collation correta

Execute este comando SQL (via phpMyAdmin ou terminal):

CREATE DATABASE my_database
    CHARACTER SET utf8mb4
    COLLATE utf8mb4_0900_ai_ci;

Passo 2: Configurar a conexão em PHP (PDO)

Ao conectar ao banco, especifique a cod

Blogs

Book Recommendations