Хотелось бы получить совет от этого. У меня есть таблица, в которой я хочу отслеживать объект и список ключей, связанных с объектом. Пример:
OBJECTID ITEMTYPE ITEMKEY
-------- -------- -------
1 1 THE
1 1 BROWN
1 2 APPLE
1 3 ORANGE
2 2 WINDOW
И OBJECTID, и ITEMKEY имеют высокую селективность (т. Е. OBJECTID и ITEMKEY сильно различаются). Мой доступ осуществляется двумя способами:
By OBJECTID: Каждый раз, когда объект изменяется, список ключей изменяется, поэтому ключ необходим на основе OBJECTID. Изменения происходят часто.
По пункту: Это для поиска по ключевым словам, а также часто.
Таким образом, мне, вероятно, нужны два ключа и выбрать один для кластеризованного индекса (тот, к которому чаще всего обращаются, или где я хочу, чтобы скорость была, пока давайте предположим, что я буду определять приоритет OBJECTID для кластеризованного). Что меня смущает, так это то, как я должен это проектировать.
Мои вопросы: что лучше:
a) Кластерный индекс (OBJECTID, ITEMTYPE, ITEMKEY), а затем индекс (ITEMKEY). Меня беспокоит то, что поскольку кластерный индекс очень большой (2 целых, 1 строка), индекс будет большим, потому что все элементы индекса должны указывать обратно на кластерный ключ.
b) Создайте новый столбец с рабочим идентификатором DIRECTORYID (целое число) в качестве первичного ключа и кластеризованного индекса и объявите два индекса для (OBJECTID, ITEMTYPE, ITEMKEY) и просто (ITEMKEY). Это сведет к минимуму пространство индекса, но увеличит затраты на поиск.
c) Кластерный индекс (OBJECTID, ITEMTYPE, ITEMKEY) и материализованное представление (ITEMKEY, ITEMTYPE, OBJECTID) на нем. Моя логика заключается в том, что это позволяет избежать поиска ключа и будет по-прежнему таким же большим, как индекс с поиском в а), за счет более высоких издержек.
d) Э-э-э ... может быть, есть лучший способ, учитывая требования?
Спасибо заранее,
Andrew