Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 collation always convert index seek to Index scan  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
попросили принудительно прописать в используемых полях приведение к дефолному базовому collation.

Будут ли еше ухудшения кроме как потеря index seek в Index scan?
18 авг 09, 20:54    [7553733]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
create database bb COLLATE  Lithuanian_CI_AS

create table test ( id varchar(36) not null primary key )

SET SHOWPLAN_TEXT 

insert into test select CAST(newid() as nvarchar(36))
GO 500000

select id from test where CAST(newid() as nvarchar(36)) = id COLLATE Cyrillic_General_CI_AS
18 авг 09, 20:55    [7553736]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Lepsik
Будут ли еше ухудшения кроме как потеря index seek в Index scan?

Вам этого мало?
18 авг 09, 21:06    [7553753]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
хочется более худших сценариев отговорить архитекта
18 авг 09, 21:16    [7553781]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
alter таблицы сделать никак?

для спящего время бодрствования равносильно сну
18 авг 09, 21:19    [7553785]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
а с временными таблицами что делать?

И что значит alter? ключи куда деать?
19 авг 09, 00:19    [7554118]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
временные таблицы создаются с дефолтным collate базы tempdb. если эти collate будут совпадать, тогда не надо будет никуда ничего менять.
у вас внешние ключи висят на строковых колонках?
alter table alter column col1 varchar(100) collate "нужный"

для спящего время бодрствования равносильно сну
19 авг 09, 12:02    [7555521]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Ray D
Member

Откуда: from the middle of nowhere
Сообщений: 3598
Блог
Lepsik
попросили принудительно прописать в используемых полях приведение к дефолному базовому collation.

Будут ли еше ухудшения кроме как потеря index seek в Index scan?


Ну еще order by, если он мог выполняться по индексу, добавит sort в планы.
19 авг 09, 12:39    [7555735]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Lepsik
Member

Откуда: glubinka
Сообщений: 4255
Алексей2003
временные таблицы создаются с дефолтным collate базы tempdb. если эти collate будут совпадать, тогда не надо будет никуда ничего менять.
у вас внешние ключи висят на строковых колонках?
alter table alter column col1 varchar(100) collate "нужный"


уважаемый вы вопрос читали, как модифицировать базы и приводит к нужному collate я в курсе.
Меня совсем другое интересовало
19 авг 09, 18:37    [7558420]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Lepsik
select id from test where CAST(newid() as nvarchar(36)) = id COLLATE Cyrillic_General_CI_AS
Ну, с таким запросом у вас всегда скан будет.
Любые преобразования (в том числе и приведение коллэйта) сносит башню серверу и оптимизатор, в лучшем случае, будет сканировать индекс - аксиома, однако...
20 авг 09, 06:24    [7559270]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
sp
Member

Откуда:
Сообщений: 3947
а принудительные подсказки оптимизатору (хинты) не помогут ему понять как надо делать?
20 авг 09, 09:11    [7559463]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
sp
а принудительные подсказки оптимизатору (хинты) не помогут ему понять как надо делать?
Здесь - нет. Он и так использует индекс, только не ищет в нем, а сканирует - грубо говоря, берет значение из индекса, приводит к нужному коллэйту, а потом уж только сравнивает.
20 авг 09, 09:15    [7559492]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
Lepsik
Алексей2003
временные таблицы создаются с дефолтным collate базы tempdb. если эти collate будут совпадать, тогда не надо будет никуда ничего менять.
у вас внешние ключи висят на строковых колонках?
alter table alter column col1 varchar(100) collate "нужный"


уважаемый вы вопрос читали, как модифицировать базы и приводит к нужному collate я в курсе.
Меня совсем другое интересовало

если вы хотите скана на 1 млн строк, вместо поиска одной. то делайте что хотите. я вопрос читал. и понимаю чем это грозит. в отличие от вас, для которого важнее "хочется более худших сценариев отговорить архитекта"
20 авг 09, 10:46    [7560101]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Lepsik
хочется более худших сценариев отговорить архитекта
Таких архитекторов не отговаривать надо, а увольнять за профнепригодность...
20 авг 09, 11:09    [7560312]     Ответить | Цитировать Сообщить модератору
 Re: collation always convert index seek to Index scan  [new]
Roman S. Golubin
Member

Откуда: 140002
Сообщений: 11541
tpg
Ну, с таким запросом у вас всегда скан будет.

А если завернуть в вид и материализовать?
20 авг 09, 14:37    [7562041]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить