Gostaríamos de usar MD5 para nossa função de hash em vez de SHA_256, mas a partir do SQL Server 2016, o MD5 foi preterido. Estamos usando isso para hash (comparando quais registros foram alterados). Agora temos esse dilema de usar ou arriscar usando essa função ou incorrer em armazenamento e sobrecarga de desempenho usando SHA_256. É frustrante que a Microsoft tenha decidido descontinuar essas funções, embora ainda sejam úteis em determinados cenários.
Este projeto não é um componente crítico do negócio. Provavelmente usaremos SHA_256, mas essa é a escolha certa? O novo desenvolvimento deve sempre evitar funções obsoletas?
Por contexto - diariamente haverá cerca de 1-2 milhões de upserting em uma tabela de 400 milhões de linhas comparando hashbytes em tempo real. cerca de 30 colunas de largura
https://learn.microsoft.com/en-us/sql/t-sql/functions/hashbytes-transact-sql?view=sql-server-2017
Da documentação da Microsoft :
Outra parte dessa página diz:
Dependendo de como você está usando MD5 e HASHBYTES, você pode ter outras opções disponíveis além de usar SHA_256.
Você pode estar interessado em usar esta metodologia documentada para determinar quais linhas têm alterações. Ele usa uma
rowversion
coluna na tabela de origem para permitir que você veja instantaneamente as linhas novas ou com alterações. Isso evita o uso de um recurso obsoleto e é muito mais rápido do que qualquer função de hash .