2009-04-21 6 views
6

Je suis en train de décider entre deux implémentations possibles et je suis désireux de choisir le meilleur :)frais généraux de performance de l'ajout d'un champ BLOB à une table

Je dois ajouter un champ BLOB facultatif se rapportant à une table qui actuellement seulement a 3 champs simples. Il est prévu que le nouveau champ sera utilisé dans moins de 10%, peut-être même moins de 5% des cas, donc il sera nul pour la plupart des lignes - en fait, la plupart de nos clients n'auront probablement jamais de données BLOB.

La première tendance d'un collègue était d'ajouter une nouvelle table pour contenir uniquement les BLOB, avec une clé étrangère (nullable) dans la première table. Il prédit que cela aura des avantages de performance lors de l'interrogation de la première table. Je pensais qu'il est plus logique et plus facile de stocker le BLOB directement dans la table d'origine. Aucune de nos requêtes ne fait SELECT * à partir de cette table donc mon intuition est que le stocker directement n'aura pas une surcharge de performance significative.

Je vais comparer les deux choix, mais j'espérais que certains gourous SQL avaient des conseils d'expérience.

Utilisation de MSSQL et Oracle.

Répondre

5

Pour MSSQL, les blobs seront stockés sur une page séparée de la base de données, de sorte qu'ils ne devraient pas affecter les performances si la colonne est nulle.

Si vous utilisez le type de données IMAGE, les données sont toujours stockées hors de la ligne. Si vous utilisez le type de données varbinary (max), si les données sont> 8kb, elles sont stockées en dehors de la ligne, sinon elles peuvent être stockées dans la ligne en fonction des options de la table.

Si vous avez seulement quelques lignes avec des blobs, les performances ne devraient pas être affectées.

Questions connexes