Я использую Hibernate и DB является sqlserver.SQL Server различает типы данных, поддерживающие Unicode, от тех, которые просто поддерживают ASCII.Например, символьными типами данных, поддерживающими Unicode, являются nchar, nvarchar, longnvarchar, где в качестве счетчиков ASCII используются char, varchar и longvarchar соответственно.По умолчанию все драйверы JDBC от Microsoft отправляют строки в формате Unicode на SQL Server, независимо от того, поддерживает ли тип данных соответствующего столбца, определенного в SQL Server, Unicode или нет.В случае, когда типы данных столбцов поддерживают Unicode, все гладко.Но в тех случаях, когда типы данных столбцов не поддерживают Unicode, возникают серьезные проблемы с производительностью, особенно во время выборки данных.SQL Server пытается преобразовать типы данных, отличные от Юникода в таблице, в типы данных Юникод перед выполнением сравнения.Более того, если для столбца не в Юникоде существует индекс, он будет проигнорирован.В конечном итоге это приведет к сканированию всей таблицы во время выборки данных, что существенно замедлит поисковые запросы.
Решение, которое мы использовали, заключалось в том, что мы пришли к выводу, что существует свойство sendStringParametersAsUnicode, которое помогает избавиться от этого преобразования в юникод.Это свойство по умолчанию имеет значение true, что заставляет драйвер JDBC отправлять каждую строку в формате Unicode в базу данных по умолчанию.Мы отключили это свойство.
У меня вопрос, теперь мы не можем отправлять данные в преобразовании в Юникод.в будущем, если столбец db varchar изменяется на nvarchar (только один столбец, а не все столбцы varchar), теперь мы должны отправить строку в формате Юникод.
Пожалуйста, предложите мне, как справиться со сценарием.
Спасибо.