Я сам не использовал кластеры таблиц Oracle, но понимаю, что кластеры таблиц индексов очень похожи на кластерные индексы MS SQL Server. То есть данные строки физически организованы по ключу кластерного индекса.
Это идеальный вариант для столбца с широким доступом, который имеет достаточно небольшое количество возможных значений (по сравнению с общим числом строк), где большинство запросов хотят получить все строки с определенным значением. Поскольку все такие строки физически хранятся вместе, дисковый ввод-вывод, особенно время поиска, сокращается.
«Достаточно маленький» определить нелегко, но почтовые или почтовые индексы в таблице адресов кажутся разумными, если вы часто запрашиваете все адреса в регионе одного кода. Коды провинций / штатов / территорий, вероятно, слишком малы для таблицы адресов по всей стране.
Таким образом, вы не хотите использовать их в столбцах с несколькими возможными значениями (например, M / F для пола), потому что тогда кластеризация ничего не купит и, вероятно, будет стоить вам для вставок. Вы также никогда не захотите использовать кластеризацию для столбцов суррогатного ключа «autonumber» (из последовательностей в Oracle), потому что это создаст «горячую точку» в последнем экстенте таблицы, поскольку все вставки должны происходить там физически. Вы также не хотите применять кластеризацию к значению столбца, которое будет обновлено, поскольку СУБД придется физически перемещать запись, чтобы поддерживать кластеризованный порядок.