2016-04-20 1 views
0

1/В таблице, как бы index I1 on T(col1, col2) отличался бы от index I2 on T(col2, col1)? Можем ли мы создать оба? Возьмем, например, Unique Index.Указатель на (col1, col2) и индекс на (col2, col1)

Index Skip Scanning, похоже, диктует, что порядок столбцов важен, что означает, что I1 будет отличаться от I2.

В другом тексте, я видел

CREATE TABLE INVOICES 
(ID NUMBER(11), 
INVOICE_DATE DATE, 
CONSTRAINT UN_ID UNIQUE(ID, DATE) USING INDEX(CREATE INDEX I_INVOICES ON INVOICES(ID, INVOICE_DATE)), 
CONSTRAINT UN_DATE UNIQUE(DATE, ID) USING INDEX I_INVOICES); 

означает как Unique constraints (col1, col2) и (col2, col1) используют один и тот же index (col1, col2).

Некоторые идеи от всех? Мой вопрос: не о Когда мы выбираем один над другим?

, но о том, когда они сосуществуют Являются ли они двумя разными показателями/объектами? Означает ли порядок? Почему пример должен использовать тот же самый индекс для обоих? Было бы лучше создать еще один индекс (col2, col1), кроме (col1, col2), потому что порядок имеет значение?

2/На тот же вопрос: Почему мы используем только CREATE INDEX, а не CREATE UNIQUE INDEX? В этом случае мы используем CREATE UNIQUE INDEX?

+0

перед созданием индексов, которые вы должны знать, как он будет использоваться. Поэтому вам нужно знать: 1. какие запросы будут выполняться против вашей таблицы; 2. мощность ваших данных, а в столбце которой будет более высокая/меньшая мощность. и т. д. Затем вы сможете определить, какие индексы вам нужны: нормальный/сжатый индекс на 'col1' или' col2' и ('уникальный индекс' на' (col1, col2) 'или на' (col2, col1) ' – MaxU

ответ

0

Заказ ключей для композитных индексов

Следуйте эти инструкции для заказа ключей в составных индексах:

Создать индекс так ключи, используемые в ИНЕКЕ составляют ведущую часть. Если некоторые ключи чаще используются в предложениях WHERE, тогда обязательно создайте индекс, чтобы более часто выбранные ключи составляли ведущую часть, позволяющую операторам, использующим только эти ключи, использовать индекс. Если все ключи используются в предложениях WHERE одинаково часто, то упорядочение этих ключей от большинства выборочных до наименьших выборок в инструкции CREATE INDEX лучше всего повышает производительность запросов. Если все ключи используются в предложениях WHERE одинаково часто, но данные физически упорядочены на одном из ключей, то сначала поместите этот ключ в составной индекс.

от: https://docs.oracle.com/cd/B10501_01/server.920/a96533/data_acc.htm#2174

2/На тот же вопрос: Почему мы используем только CREATE INDEX и не CREATE UNIQUE INDEX? В этом случае мы используем CREATE UNIQUE INDEX?

Это означает, что комбинация значений в индексированных столбцах должна быть уникальной.

от: http://www.techonthenet.com/oracle/indexes.php

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

Смежные вопросы