Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

É correto indexar todas as colunas em um banco de dados mysql?


Não, você não indexa todas as colunas. Você indexa colunas que estão especificamente envolvidas em um WHERE cláusula e, às vezes, se estiverem envolvidos em um ORDER BY .

Nesse caso, você deseja um índice em type :
SELECT name FROM users WHERE type='admin'

Nesse caso, você deseja um índice em active,type :
SELECT name FROM users WHERE type='admin' AND active=1

Neste caso, você pode querer um índice em active,type,name :
SELECT name FROM users WHERE type-='admin' AND active=1 ORDER BY name LIMIT 10

Quanto mais índices você adicionar, mais lentas serão as gravações, mas as leituras serão mais rápidas. Esta é uma troca clássica. Avalie cuidadosamente quais índices você precisa e aplique-os somente se houver um benefício tangível. Não apenas dê um tapa neles porque você sente que eles deveriam estar lá.

Em tabelas super pequenas, aquelas com <1000 linhas, os índices não ajudarão muito porque uma verificação de tabela não demorará muito. Em qualquer coisa não trivial eles são absolutamente essenciais.

Se você está tendo problemas de desempenho, sugiro que seu esquema seja o maior obstáculo, não a falta de índices.