A pergunta praticamente diz tudo. Estamos falando do MySQL aqui, versão 5.1.
O que estou querendo saber é se isso significaria estritamente que as linhas foram excluídas ou se existem outros cenários possíveis que poderiam causar isso: bloqueio estranho ou condições de corrida etc. que forçam o ID
contador da tabela a incrementar várias vezes para uma única inserção.
Presumo que você esteja perguntando sobre colunas com a
AUTO_INCREMENT
propriedade.Não, as linhas excluídas não são o único motivo, existem vários outros:
inserções que não foram bem-sucedidas (devido a violações duplicadas de chave primária ou única ou outros motivos).
inserções dentro de transações que não foram confirmadas e foram revertidas.
inserções onde o
id
foi explicitamente definido (e os números de id foram ignorados ou valores negativos adicionados). No segundo caso, você pode terMAX(id)
menos deCOUNT(id)
como resultado.variação do caso anterior: a coluna não estava
AUTO_INCREMENT
quando a tabela foi criada - por isso houve inserções explícitas por algum período - e depois modificada.atualizações da coluna de incremento automático.
o
id
foi definido para iniciar a partir de um valor diferente do padrão1
.a configuração da etapa auto_increment (variável do sistema:
auto_increment_increment
) do servidor não é1
(ou foi alterada para algo diferente1
por algum período).e (algo que geralmente é negligenciado porque
id
geralmente é a chave primária), a coluna não foi definida como a chavePRIMARY
ouUNIQUE
. Isso permite duplicatas e mais um caso em que oMAX
pode ser menor que oCOUNT
.uma variação do acima é (com o mecanismo MyISAM) uma coluna de auto-incremento que faz parte de uma chave primária composta.