"Если в таблице существует первичный ключ, сжатие повторно сохраняет записи таблицы в порядке их первичного ключа. Это обеспечивает эквивалент необслуживаемых кластерных индексов и значительно расширяет возможности механизма чтения базы данных Microsoft Jet. более эффективный. "
ACC2000: дефрагментация и сжатие базы данных для повышения производительности
"Новый метод сжатия. Сжатие базы данных теперь приводит к тому, что индексы сохраняются в формате кластеризованного индекса. Хотя кластеризованный индекс не поддерживается до следующего сжатия, производительность все еще улучшается. Это отличается от Microsoft Jet 2. х, где строки данных были сохранены так, как они были введены. Новый компактный метод с кластеризованным ключом основан на первичном ключе таблицы. Новые введенные данные будут в порядке времени. "
Новые функции в Microsoft Jet версии 3.0
То, что ни одна из этих статей не сообщает вам, - это то, что необходимо соблюдать: если в столбцах NOT NULL
существует ограничение UNIQUE
(или уникальный индекс), то оно будет использоваться вместо PRIMARY KEY
. Что я не смог выяснить, так это то, как ACE / Jet выбирает единицу, если в таблице несколько ограничений UNIQUE
: сначала создано? Порядковый номер первого столбца? Порядковый номер первого NOT NULL
столбца? Ваше предположение так же хорошо, как и мое.