Atualmente, temos uma configuração de gatilho oninsert() que toda vez que uma linha é inserida em uma tabela, uma consulta de atualização é acionada para atualizar 3 campos. Os campos são um cálculo simples, como
field1update = (amt/12)*14
field2update = (amt/12)*16
field3update = (amt/12)*18
O gatilho é adequado, mas às vezes bloqueia a linha para que ela não possa ser acessada imediatamente por um momento. Minha pergunta é se esses campos fossem convertidos em uma coluna calculada (por favor, desculpe minha ignorância) ou uma coluna computada, veríamos melhoria de desempenho?
Normalmente, esta é uma importação de planilha e tem aproximadamente 20.000 - 25.000 linhas sendo inseridas por vez.
Com base nas informações que você forneceu, fiz um teste bem básico e sugiro que você configure algo semelhante antes de tomar uma decisão final. Meu resultado mostra que a coluna computada terá um desempenho melhor em relação ao gatilho, mas quero enfatizar que isso pode variar de acordo com a estrutura da tabela, taxa de inserção, outras atividades na tabela e você precisa testar.
Configurar:
Inserindo em ambas as tabelas.
A primeira inserção (trigger) tem que fazer mais trabalho (70%) em comparação com a segunda inserção (coluna computada) (30%). Se eu olhar para o custo da subárvore para a primeira inserção (0,010023+0,0132842)=0,0233072 e para a segunda inserção é 0,0100022.
Para o tempo de CPU da inserção do gatilho, recebo
Para inserção de coluna computada, recebo: