Первый - ИЗМЕРИТЕ его. Это единственный способ сказать наверняка.
Второе. Если у вас нет проблемы со скоростью поиска строки, тогда сохраните ее просто и не используйте хэш.
Однако для вашего фактического вопроса (и просто потому, что это интересная мысль). Это зависит от того, насколько похожи строки. Помните, что движку БД не нужно сравнивать все символы в строке, достаточно, чтобы найти разницу. Если вы просматриваете 10 миллионов строк, которые начинаются с тех же 300 символов, то хэш, скорее всего, будет быстрее. Если, однако, вы ищете единственную строку, которая начинается с x, тогда сравнение строк может быть быстрее. Я думаю, что хотя SQL все равно должен будет получить всю строку с диска, даже если он использует только первый байт (или первые несколько байтов для многобайтовых символов), поэтому общая длина строки будет по-прежнему иметь влияние.
Если вы пытаетесь сравнить хэш, вы должны сделать хэш индексированным вычисленным столбцом. Это не будет быстрее, если вы будете обрабатывать хэши для всех строк при каждом запуске запроса!
Вы также можете рассмотреть возможность использования функции CRC SQL. Он создает int, который будет еще быстрее компаре и быстрее вычисляется. Но вам придется дважды проверить результаты этого запроса, фактически проверив строковые значения, потому что функция CRC не предназначена для такого рода использования и гораздо более предпочтительна для возврата повторяющихся значений. Вам нужно будет выполнить проверку CRC или Hash в одном запросе, а затем внешний запрос, который сравнивает строки. Вы также захотите посмотреть, как генерируется QEP, чтобы оптимизатор обрабатывал запрос в том порядке, в котором вы планировали. Сначала он может сначала выполнить сопоставление строк, а затем CRC или Hash.
Как заметил кто-то другой, это только хорошо, если вы делаете точное совпадение. Хэш не может помочь, если вы пытаетесь выполнить какой-либо диапазон или частичное совпадение.
Интересный вопрос! –
не уверен, что это относится к .net или C#, хотя ... –