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

Ordem de indexação composta InnoDB e desempenho INSERT


(Nota:Esta resposta esclarece ou discorda de alguns dos comentários já escritos.)

DELETEs ficam mais lentos devido à exclusão das entradas de índice. UPDATEs pode ser desacelerado -- depende se uma coluna indexada é alterada.

SELECTs , UPDATEs , e DELETEs , mas não INSERTs , precisa encontrar a(s) linha(s); para isso, um índice pode ajudar muito.

Um INSERT é prejudicado uma quantia extra se houver um UNIQUE índice para verificar.

Chaves secundárias (no InnoDB), exceto para UNIQUE chaves, são atualizados (geralmente devido a INSERT e DELETE , mas possivelmente devido a UPDATE ) de forma 'atrasada' através do que é chamado de "Change Buffer". Isso efetivamente adia a atualização do índice, mas ainda mantém o índice totalmente utilizável.

Nada disso é afetado pela ordem das colunas em um índice. No entanto, se um índice for maior do que pode ser armazenado em cache na RAM, o "cache" entra em ação e a E/S pode ou não estar envolvida. Mas isso é outro assunto.

Em geral, o benefício de um índice para leitura supera em muito a desaceleração para operações de gravação.