INFORMIX-SE:Является ли CLUSTER INDEX желательным при загрузке отсортированного загрузочного файла в новую таблицу?
Мои пользователи периодически запускать скрипт SQL [REORG.SQL], который выгружает все строки из таблицы в отсортированном порядке в двух отдельных файлах (Активны и Inactives), падает таблица, повторно создает table, загружает отсортированные файлы загрузки в него, создает индекс кластера в одном столбце. Я сортировал свои файлы разгрузки, создавал другие поддерживающие индексы и обновлял свою статистику.
(См REORG.SQL скрипт на: SE: 'bcheck -y' anomaly)
(Также см: customer.pk_name joining transactions.fk_name vs. customer.pk_id [serial] joining transactions.fk_id [integer] по причине, почему кластер индекс по имени и не pk_id [серийный номер] = fk_id [INT])
С моей REORG .SQL-скрипт, у меня были проблемы с постоянством индексного файла, поэтому я подозревал, что CLUSTER INDEX имеет к этому какое-то отношение и создал индекс без кластеризации, и проблемы исчезли!
Теперь мой вопрос: если мне удастся загрузить все данные о транзакциях, отсортированные по полному имени клиента во вновь созданной таблице, мне действительно необходимо создать индекс CLUSTER, если на самом деле строки уже отсортированы в том же порядке, что и кластеризация? .. Я знаю, что кластеризованный индекс начинает терять свою кластеризацию при добавлении новых строк, так что в чем преимущество создания индекса кластера? .. оптимизатор запросов использует преимущества кластеризации против. некластеризованный индекс, когда строки по существу находятся в одном кластерном порядке? .. Кто-нибудь сталкивался с проблемами IDX/DAT-файла при кластеризации таблицы? .. Возможно, у моего SQL-скрипта что-то не так? (ПОЖАЛУЙСТА, ОБРАТИТЕ МОЙ СЦЕНАРИЙ КОДА МЕНЯ, ЧТОБЫ УВИДЕТЬ, ЕСЛИ Я ЧТО-ТО ЧТОБЫ НЕПРАВИЛЬНО?)
+1 - Кластеризованные индексы МОГУТ пострадать от удара по производительности, когда вы вставляете неупорядоченные строки в таблицу, но обычно вы восполняете его, если вы кластерируете в нужное поле. Столбцы идентичности являются классическим примером кластеризации. – JNK
@Bob: Вы правильно относитесь к двум загружаемым файлам, физически не загружающим строки транзакций каждого клиента, поэтому я ранее создал кластерный индекс, но испытывал проблемы с IDX-файлом. Я выбрал кластер с полным именем клиентов, потому что я использую экраны выполнения I-SQL, и когда пользовательский запрос клерков по имени клиента в главном, все транзакции, принадлежащие каждому клиенту, автоматически запрашиваются и время отклика выполняется быстрее. объединение по имени, а не pk_id [serial] = fk_id [int], см. http://stackoverflow.com/questions/3066714 –
@JNK: Какая производительность ударила? ..Поэтому, если мне удастся загрузить все строки транзакций, упорядоченные cust_fullname, это будет по сути то же самое, что и кластеризация, и этот порядок не будет поддерживаться после добавления новых транзакций, поэтому лучше просто создать некластеризованный индекс на имя, так как .DAT уже физически упорядочен по имени? –