Индексированная база данных состоит из двух частей: набора физических записей, которые расположены в некотором произвольном порядке, и набора индексов, которые идентифицируют последовательность, в которой следует читать записи, чтобы получить результат, отсортированный по некоторому критерию. Если между физическим расположением и индексом нет корреляции, то для считывания всех записей по порядку может потребоваться выполнение множества независимых операций чтения одной записи. Поскольку база данных может считывать десятки последовательных записей за меньшее время, чем требуется для чтения двух непоследовательных записей, производительность может быть улучшена, если записи, которые являются последовательными в индексе, также хранятся последовательно на диске. Указание того, что индекс кластеризован, приведет к тому, что база данных приложит некоторые усилия (разные базы данных различаются по размеру), чтобы расположить вещи так, чтобы группы записей, которые являются последовательными в индексе, были последовательными на диске.
Например, если начать с пустой некластеризованной базы данных и добавить 10 000 записей в произвольной последовательности, записи, вероятно, будут добавлены в конце в том порядке, в котором они были добавлены. Для считывания базы данных по порядку по индексу потребуется 10 000 операций чтения одной записи. Однако если использовать кластерную базу данных, при добавлении каждой записи система может проверить, была ли предыдущая запись сохранена сама по себе; если он обнаружит, что это так, он может записать эту запись вместе с новой в конце базы данных. Затем он может посмотреть на физическую запись перед слотами, в которых находились перемещенные записи, и посмотреть, была ли запись, которая за ней следовала, сохранена сама по себе. Если он обнаружит, что это так, он может переместить эту запись в это место. Использование такого подхода приведет к тому, что многие записи будут сгруппированы в пары, что может почти удвоить скорость последовательного чтения.
На самом деле кластерные базы данных используют более сложные алгоритмы, чем этот. Однако следует отметить, что существует компромисс между временем, необходимым для обновления базы данных, и временем, необходимым для ее последовательного чтения. Обслуживание кластерной базы данных значительно увеличит объем работы, необходимой для добавления, удаления или обновления записей любым способом, который может повлиять на последовательность сортировки. Если база данных будет считываться последовательно намного чаще, чем она будет обновляться, кластеризация может стать большим выигрышем. Если он будет обновляться часто, но редко будет считываться последовательно, кластеризация может привести к значительному снижению производительности, особенно если последовательность добавления элементов в базу данных не зависит от порядка их сортировки в отношении кластеризованного индекса.