уникальные индексы и операторы включения - PullRequest
1 голос
/ 25 мая 2009

создать уникальный индекс

В DB2 UDB я могу создать индекс, используя следующий синтаксис

create unique index I_0004 on TABLENAME (a) INCLUDE (b, c, d);

где a, b, c и d - поля таблицы TABLENAME.

В DB2 для os390 этот синтаксис (ключевое слово INCLUDE) недопустим, поэтому я создаю индексы следующим образом

create unique index I_0004 on TABLENAME (a);  
create index I_0005 on TABLENAME (a, b, c, d);

Соответствуют ли два приведенных выше утверждения решению с ключевым словом INCLUDE?

порядок столбцов индекса

И, если я немного изменю первое утверждение

create index I_0005 on TABLENAME (a, b, c, d) ALLOW REVERSE SCANS;  

это ALLOW REVERSE SCANS эквивалентно созданию индексов

create index I_0005 on TABLENAME (a, b, c, d);  
create index I_0005 on TABLENAME (d, c, b, a);  

или он также учитывает любую комбинацию данных столбцов (я имею в виду, a, b, c, d; b, c, d, a; c, d, a, b; и т. Д.)?

1 Ответ

1 голос
/ 25 мая 2009

Относительно UNIQUE INDEX: примерно да, уникальный индекс на (a), включая (b, c, d) , равен , эквивалентен уникальному индексу только на (a) плюс неуникальный на (a, b, c, d) - за исключением того, что внутренне ядро ​​базы данных может использовать меньше места & c.

Относительно ALLOW REVERSE SCANS: нет, индекс для (a, b), который может быть подвергнут обратному сканированию, не эквивалентен индексу, который не может добавить один на (b, a) - скорее, это индекс, который может быть отсканировано в обратном направлении, эквивалентно тому, которое не может быть добавлено к другому в тех же столбцах, где каждый ASC становится DESC и наоборот (и ASC является значением по умолчанию, если вы не укажете).

Обратите внимание, что поскольку обратное сканирование DB2 9.1 разрешено по умолчанию, см. http://publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/com.ibm.db2.udb.rn.doc/doc/c0023548.htm (и, я считаю, что DB2 V8 сейчас не поддерживается, см. http://www -01.ibm.com / support /docview.wss?rs=71&uid=swg21370360 - я думаю, V9.5 является текущей версией).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...