Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Новый топик    Ответить
 строковый индекс  [new]
Marvin_ru
Member

Откуда: Москоу сити
Сообщений: 90
не могу найти никак - нужно создать индекс по полю VARCHAR(80) на первые 5 символов
19 май 08, 19:17    [5685584]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
Marvin_ru
не могу найти никак - нужно создать индекс по полю VARCHAR(80) на первые 5 символов

Нет в DB2 индексов на функцию как в оракле.
Поэтому создайте в табличку GENERATED ALWAYS поле и насесьте на него индекс.
20 май 08, 11:52    [5687498]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
gardenman
Member

Откуда: С-Петербург
Сообщений: 2347
навесьте)) - типа очепятка...:)
20 май 08, 11:52    [5687502]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
set integrity for my_table off;
alter table my_table add my_col_gen varchar(5) generated always as (substr(my_col, 1, 5));
set integrity for my_table immediate checked force generated;
create index my_table1 on my_table(my_col_gen);
20 май 08, 11:59    [5687584]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
TORT
Member

Откуда:
Сообщений: 1095
Где по-подробнее почитать про конструкцию generated always as ()?
20 май 08, 13:11    [5688229]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
TORT
Где по-подробнее почитать про конструкцию generated always as ()?
В доке!
20 май 08, 15:41    [5689458]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
Marvin_ru
Member

Откуда: Москоу сити
Сообщений: 90
ясно, спасибо

а как тогда будут запросы выглядеть ?

Например поле stringLong и его сгенерированный индекс stringLongInd на 5 символов. Ищем строку 'значение'

select * from table1 where stringLongInd = 'значе' and stringLong = 'значение'

при этом будет происходит отбор по индексу поля stringLongInd, а потом по полю stringLong. да ?
20 май 08, 17:03    [5690150]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
Mark Barinstein
Member

Откуда: Москва
Сообщений: 4946
Marvin_ru
а как тогда будут запросы выглядеть ?

Например поле stringLong и его сгенерированный индекс stringLongInd на 5 символов. Ищем строку 'значение'

select * from table1 where stringLongInd = 'значе' and stringLong = 'значение'

при этом будет происходит отбор по индексу поля stringLongInd, а потом по полю stringLong. да ?
Теоретически оптимизатор даже при
select * from table1 where stringLong = 'значение'
может выбрать индексный план доступа.
20 май 08, 17:25    [5690379]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
TORT
Member

Откуда:
Сообщений: 1095
Mark Barinstein, просто иногда так лень искать самому:)
22 май 08, 10:36    [5698326]     Ответить | Цитировать Сообщить модератору
 Re: строковый индекс  [new]
TORT
Member

Откуда:
Сообщений: 1095
Mark Barinstein, просто иногда так лень искать самому:)
22 май 08, 10:36    [5698328]     Ответить | Цитировать Сообщить модератору
Все форумы / IBM DB2, WebSphere, IMS, U2, etc Ответить