Я не вижу, откуда добавление контрольной суммы даст вам что-либо с таким уровнем коллизий. Даже 1 коллизия - это слишком много, так как это приведет к неправильному соединению данных. Если вы не можете гарантировать, что присоединитесь к правильной записи, бессмысленно, если это повышает производительность, но портит целостность данных. Это, похоже, финансовые данные, поэтому вам лучше быть уверенным, что ваши запросы не дадут плохих результатов. На самом деле вы можете в конечном итоге списать или зачислить неверные счета, если возникнут какие-либо коллизии.
Если вы пойдете этим путем, Марк прав, что вы должны, если это возможно, выполнить предварительные вычисления (добавление вычисления, которое должно происходить с каждой записью в таблицах с многомиллионными записями, вряд ли повысит производительность в моем опыте). Возможно, если вы можете сделать предварительно вычисленный столбец (и вам понадобятся триггеры, чтобы поддерживать его актуальность), вам может не потребоваться присоединиться ко всем шести другим столбцам, чтобы избежать коллизий. Тогда, возможно, вы могли улучшить производительность. Все, что вы можете сделать, это проверить свою теорию. Но будьте уверены, что у вас нет столкновений.
Рассматривали ли вы использование суррогатного ключа, а затем уникальный индекс для шести полей естественного ключа? Тогда вы можете присоединиться к суррогатному ключу и, вероятно, это немного улучшит производительность. Невозможно объединить шесть столбцов (один - varchar) вместо одного суррогатного ключа. По размеру данных, я понимаю, что это может быть сложнее реорганизовать, чем в непроизводственной системе, но на самом деле может стоить простоя, чтобы навсегда решить постоянные проблемы с производительностью. Только вы можете сказать, насколько сложным было бы это изменение и как трудно было бы изменить все sps или запросы для лучшего объединения. Тем не менее, это может быть целесообразно попробовать.