Я не могу найти ничего, чтобы подтвердить, работают ли правильно построенные запросы быстрее в чувствительной к регистру базе данных без учета регистра (хотя я подозреваю, что разница незначительна), но некоторые вещи очевидны я:
- Если ваши бизнес-требования не требуют этого, вы выполняете много дополнительной работы (суть ответы HLGEM и Damien_The_Unbeliever).
- Если ваши бизнес-требования не требуют этого, вы настраиваете себя на множество возможных ошибок.
- Слишком легко создавать плохо выполняющиеся запросы в базе данных без учета регистра, если требуется поиск чувствительный к регистру :
запрос типа:
... WHERE UPPER(GivenName) = 'PETER'
не будет использовать индекс для GivenName. Вы могли бы подумать что-то вроде:
... WHERE GivenName = 'PETER' COLLATE SQL_Latin1_General_CP1_CS_AS
будет работать лучше, и это работает. Но для максимальной производительности вы должны сделать что-то вроде:
... WHERE GivenName = 'PETER' COLLATE SQL_Latin1_General_CP1_CS_AS
AND GivenName LIKE 'PETER'
(подробности см. в этой статье )