Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как "включить" индекс при регистрозависимом поиске по регистронезависимому полю?  [new]
"Включить" инд
Guest
Пусть есть таблица T(ID int, Value varchar(100) collate Cyrillic_General_CI_AS) - у поля Value коллейшн регистронезависимый.
Пусть еще есть индекс по полю Value.

Если я хочу сделать регистрозависимый поиск, то пишу:
select *
from T 
where T.Value collate Cyrillic_General_CS_AS = '1' collate Cyrillic_General_CS_AS 
но такая конструкция не позволяет делать seek у индекса по Value.

Тогда можно написать:
select *
from T 
where T.Value collate Cyrillic_General_CS_AS = '1' collate Cyrillic_General_CS_AS 
and T.Value = '1'
и Seek по индексу уже есть.

Вопрос - на сколько такой подход "включения" индекса при подобном поиске работоспособен и всегда дает гарантированный результат (seek по индексу)? Есть ли другие подходы?
30 сен 15, 16:52    [18216035]     Ответить | Цитировать Сообщить модератору
 Re: Как "включить" индекс при регистрозависимом поиске по регистронезависимому полю?  [new]
msLex
Member

Откуда:
Сообщений: 8204
"Включить" инд
Пусть есть таблица T(ID int, Value varchar(100) collate Cyrillic_General_CI_AS) - у поля Value коллейшн регистронезависимый.
Пусть еще есть индекс по полю Value.

Если я хочу сделать регистрозависимый поиск, то пишу:
select *
from T 
where T.Value collate Cyrillic_General_CS_AS = '1' collate Cyrillic_General_CS_AS 
но такая конструкция не позволяет делать seek у индекса по Value.

Тогда можно написать:
select *
from T 
where T.Value collate Cyrillic_General_CS_AS = '1' collate Cyrillic_General_CS_AS 
and T.Value = '1'
и Seek по индексу уже есть.

Вопрос - на сколько такой подход "включения" индекса при подобном поиске работоспособен и всегда дает гарантированный результат (seek по индексу)? Есть ли другие подходы?



гарантировать seek, вы можете разве что хинтом with(forceseek, index(index_name)), если seek вообще возможен
30 сен 15, 17:10    [18216178]     Ответить | Цитировать Сообщить модератору
 Re: Как "включить" индекс при регистрозависимом поиске по регистронезависимому полю?  [new]
Cyrillic_General_CS_AS
Guest
"Включить" инд,

да это не подход или трюк или хак, а просто возможность воспользоваться тем, что есть так, как им нужно пользоваться с выгодой для себя

если должно совпасть с учетом регистра, то без учета регистра оно тем более будет совпадать, а индекс по такому условию у нас есть

вот он сик, а потом вычисляем "остальную хрень"
30 сен 15, 17:25    [18216339]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить