Eu sempre ver as pessoas dizem que os índices abrandar update
, delete
e insert
. Isso é usado como uma declaração geral, como se fosse um absoluto.
Enquanto ajusto meu banco de dados para melhorar o desempenho, continuo encontrando essa situação que parece contradizer essa regra logicamente para mim, e em nenhum lugar encontro alguém que diga ou explique de outra forma.
No SQL Server, e acredito / presumo a maioria dos outros DBMS, seus índices são criados com base nas colunas específicas que você especificar. Inserções e exclusões sempre afetam uma linha inteira; portanto, não há como elas não afetarem o índice, mas as atualizações parecem um pouco mais exclusivas, elas podem afetar especificamente apenas determinadas colunas.
Se eu tiver colunas que não estão incluídas em nenhum índice e atualizá-las, elas ficarão mais lentas apenas porque eu tenho um índice em outras colunas nessa tabela?
Como exemplo, digamos na minha User
tabela que eu tenho um ou dois índices, a chave primária, que é uma coluna Identidade / Incremento Automático, e possivelmente outra em alguma coluna de chave estrangeira.
Se eu atualizar uma coluna sem o índice diretamente, como digamos o número de telefone ou o endereço, essa atualização será mais lenta porque tenho índices nessa tabela em outras colunas em qualquer situação? As colunas que estou atualizando não estão em índices; portanto, logicamente, os índices não devem ser atualizados, não deveriam? Se alguma coisa, eu acho que eles são acelerados se eu usar os índices na cláusula WHERE.
so there is no way they will not affect the index
exceto para índices filtrados ...