Bonjour,
Encore une fois un client m'oblige à remettre en question un avis bien tranché que j'ai . Pour moi les tables heap sont à bannir.
un message a été envoyé à des développeurs et il avait cette teneur
C'est un truc de base que tout développeur devrait savoir qu'on ne met pas d'index cluster sur des tables ou il y a des insert,update,delete massif. on ne net pas d'index du tout sur de telles tables
Je pense que le contexte est un contexte B.I. genre une table de staging. on parle en tout cas en millions de lignes et en centaines de giga voir en terra.
2 choses m'interpelle :
  • pas d'index cluster sur de telles tables : pas d'accord
  • Pas d'index tout court sur de telles tables : pas d'accord du tout +++



Alors je suis surpris car dans la doc microsoft j'avais lu il y a peu (genre il y a une semaine) qu'il ne fallait utiliser les heap que sur des mini table (tiny in english). mais aujourd'hui je ne retrouve pas l'info


Alors pour me faire une opinion la plus forte possible, je vais reprendre une série d'affirmations trouvées sur internet et ailleurs.
  1. une table heap ne devrait être utilisée que sur des toutes petites tables
  2. On n'utilise pas "heap table" pour des tables où il y a beaucoup de mise à jour. Cela risque de provoquer une forte fragmentation
  3. on n'utilise pas de table heap sur des données volumineuses sans index non-cluster couvrant toutes les requetes
  4. on utilise pas de table heap si il y a des opérations de tri ou de regroupement
  5. si il n'y a pas d'index clustérisé, il n'est pas nécessaire d'avoir un espace supplémentaire pour stocker l'arborescence
  6. si il n'y a pas d'index clustérisé, il n'y a pas de temps supplémentaires pour maintenir l'index
  7. Lorsqu'on supprime des données d'une table heap, sql server ne désalloue pas toujours l'espace pour les pages vidées
  8. pour défragmenter une table heap on peut exporter les datas tronquer la table et réimporter les données dans la table
  9. C'est un truc de base que tout développeur devrait savoir qu'on ne met pas d'index cluster sur des tables ou il y a des insert,update,delete massif. on ne net pas d'index du tout sur de telles tables

Je demande donc aux professionnels de la données de jouer à vrai ou faux avec ces affirmations
J'ai bien entendu mon avis sur la question mais comme toujours j'ai besoin de le confronter
N'hésitez pas à argumenter vos réponses et ajouter d'autres vérités et contre vérités
Cordialement,