Uma das otimizações mais básicas é tentar manter seus dados (e índices) utilizando o menor espaço possível no disco (e em memória). Isto pode fornecer grandes melhorias porque a leitura de disco é mais rápida e normalmente menos memória principal será usada. A indexação também exige menos recursos se for feita em colunas menores.
O MySQL suporta vários diferentes tipos de tabelas e formatos de registros. Você pode ter um ótimo ganho de performance escolhendo o formato certo de tabela a ser usada. See Capítulo 7, Tipos de Tabela do MySQL.
Pode-se obter melhor performance em uma tabela e minimizar espaço de armazenagem utilizando as técnicas listadas abaixo:
Utilize os tipos mais eficientes (menores) sempre que possível. O MySQL tem vários tipos especializados que economizam espaço em disco e memória.
Utilize tipos inteiros menores se possível para obter
tabelas menores. Por exemplo, MEDIUMINT
normalmente é melhor que INT
.
Declare colunas para serem NOT NULL
se
possível. Isto deixa tudo mais rápido e você economiza um
bit por coluna. Perceba que se você realmente precisa de
NULL
nas suas aplicações, podem ser
usados. Tente simplesmente não usá-la em todas as colunas
por padrão.
Se você não possui nenhuma coluna de tamanho variável
(VARCHAR
, TEXT
ou
BLOB
), um formato de registro de tamanho
fixo para é utilizado. Isto é mais rápido mas
infelizmente pode ocupar mais espaço. See
Secção 7.1.2, “Formatos de Tabelas MyISAM
”.
O índice primário de uma tabela deve ser o mais curto possível. Isto torna a identificação de um registro fácil e eficiente.
Para cada tabela, você deve decidir qual metódo de armazenamento/índice utilizar. See Capítulo 7, Tipos de Tabela do MySQL.
Crie somente os índices necessários. Índices são bons para recuperação mas ruins quando você precisa armazenar os dados rapidamente. Se na maioria das vezes você acessa uma tabela pesquisando em uma combinação de colunas, crie um índice para elas. A primeira parte do índice deve ser a coluna mais utilizada. Se você SEMPRE utiliza várias colunas, deve usar a coluna com mais duplicações em primeiro lugar para obter melhor compactação do índice.
Se for melhor que uma coluna tenha um prefixo único nos primeiros caracteres, é melhor indexar somente este prefixo. O MySQL suporta um índice em uma parte de uma coluna de caracteres. Índices menores são mais rápidos não somente porque eles exigem menos espaço em disco mas também porque eles irão fornecer a você mais acerto no cache de índice e isto diminui acessos a disco. See Secção 5.5.2, “Parâmetros de Sintonia do Servidor”.
Em algumas circunstâncias pode ser benéfico dividir uma tabela que é varrida frequentemente em duas. Isto é verdade especificamente se a tabela tiver um formato dinâmico e for possível utilizar um formato de tabela estático que possa ser usada para encontrar os registros relevantes quando se fizer uma varredura da tabela.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.