Heap table
Une table sans index cluster — les lignes sont stockées sans ordre, là où il y a de la place, et non triées selon une clé. PostgreSQL stocke toujours ainsi (un « heap ») ; sous SQL Server, une table est un heap tant qu'aucun index cluster n'a été ajouté.
Mécanique : les nouvelles lignes atterrissent n'importe où s'il y a de la place libre ; chaque ligne a un identifiant physique (ctid dans Postgres, RID dans SQL Server) vers lequel pointent les index. Avantage : insertions rapides, aucun ordre à maintenir. Contrepartie : les recherches par intervalle nécessitent un index plus une consultation, puisque les données ne sont pas triées, et les lignes supprimées laissent des « trous » → fragmentation et gonflement (nettoyé par VACUUM sous Postgres). Sous SQL Server, un heap est généralement jugé moins bon qu'un index cluster pour la plupart des charges de travail. Sous PostgreSQL, le heap est la norme — l'ordre vient des index, et CLUSTER retrie une fois pour toutes, sans le maintenir. Comprendre heap contre index cluster, c'est comprendre comment les données sont réellement posées sur le disque.