Я знаю, что есть параметр конфигурации базы данных «Последовательность сортировки базы данных» для настройки сопоставления в db2. Но поскольку это влияет на всю базу данных и может быть установлено только при ее создании, я ищу возможность установить это для одной таблицы или столбца. В качестве альтернативы можно установить сопоставление в операторе SQL, как в Microsoft SQL Server:
SELECT * FROM table ORDER BY col1 COLLATE Latin1_General_CI_AS
Возможно ли это в DB2? Как?
Во-вторых, как изменение параметров сортировки для всей базы данных, таблицы или внутри запроса повлияет на производительность?
Есть функция под названием COLLATION_KEY_BIT который можно использовать в таком заявлении:
SELECT FIRSTNME, LASTNAME
FROM EMPLOYEE
ORDER BY COLLATION_KEY_BIT(LASTNAME, 'UCA400R1_LDE')
Это своего рода информация, которая должна быть в руководстве.
Я не знаю о DB2, но для других (MySql, PostgresSQL, SQL Server или Oracle) вы можете использовать ALTER TABLE для изменения сопоставления (или ALTER DATABASE для изменения сопоставления по умолчанию для новых таблиц).
Что касается вашего второго вопроса: ДА - это влияет на скорость ошибки, и было бы лучше не устанавливать сопоставление в выборе. Вы можете использовать алгоритм сортировки Unicode, который должен обеспечивать лучшую сортировку Unicode: даже в этом случае вы обнаружите, что этот алгоритм не работает идеально для всех языков, но со статистической точки зрения вы получите лучшие результаты.
Внедрение разных параметров сортировки для каждого пользователя может оказаться слишком дорогостоящим, даже если это неплохо для взаимодействия с пользователем.