Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Meilleur moyen d'enregistrer une police dans la base de données SQL Server

Il existe un très bon article de Microsoft Research appelé To Blob or Not To Blob .

Leur conclusion après un grand nombre de tests et d'analyses de performances est la suivante :

  • si vos images ou votre document ont généralement une taille inférieure à 256 Ko, il est plus efficace de les stocker dans une colonne VARBINARY de la base de données

  • si vos images ou votre document ont généralement une taille supérieure à 1 Mo, leur stockage dans le système de fichiers est plus efficace (et avec l'attribut FILESTREAM de SQL Server 2008, ils sont toujours sous contrôle transactionnel et font partie de la base de données)

  • entre les deux, c'est un peu compliqué selon votre utilisation

Si vous décidez de mettre vos images dans une table SQL Server, je vous recommande fortement d'utiliser une table séparée pour stocker ces images - ne stockez pas la photo de l'employé dans la table des employés - conservez-les dans une table séparée. De cette façon, la table Employé peut rester simple et efficace et très efficace, en supposant que vous n'avez pas toujours besoin de sélectionner la photo de l'employé également dans le cadre de vos requêtes.

Pour les groupes de fichiers, consultez Architecture des fichiers et des groupes de fichiers pour une introduction. Fondamentalement, vous devez soit créer votre base de données avec un groupe de fichiers séparé pour les grandes structures de données dès le début, soit ajouter un groupe de fichiers supplémentaire ultérieurement. Appelons-le "LARGE_DATA".

Désormais, chaque fois que vous avez une nouvelle table à créer qui doit stocker des colonnes VARCHAR(MAX) ou VARBINARY(MAX), vous pouvez spécifier ce groupe de fichiers pour les données volumineuses :

 CREATE TABLE dbo.YourTable
     (....... define the fields here ......)
     ON Data                   -- the basic "Data" filegroup for the regular data
     TEXTIMAGE_ON LARGE_DATA   -- the filegroup for large chunks of data

Consultez l'intro MSDN sur les groupes de fichiers et jouez avec !