sql >> Databáze >  >> RDS >> Sqlserver

Ukládání obrázků na SQL Server?

Existuje opravdu dobrý dokument od společnosti Microsoft Research s názvem To Blob or Not To Blob.

Jejich závěr po velkém počtu výkonnostních testů a analýz je tento:

  • pokud mají vaše obrázky nebo dokument obvykle velikost menší než 256 kB, je jejich ukládání do sloupce VARBINARY v databázi efektivnější

  • pokud jsou vaše obrázky nebo dokument obvykle větší než 1 MB, jejich ukládání do souborového systému je efektivnější (a s atributem FILESTREAM SQL Server 2008 jsou stále pod transakční kontrolou a jsou součástí databáze)

  • mezi těmito dvěma je to trochu házení v závislosti na vašem použití

Pokud se rozhodnete umístit své obrázky do tabulky SQL Serveru, důrazně doporučuji použít samostatnou tabulku pro ukládání těchto obrázků - neukládejte fotografii zaměstnance do tabulky zaměstnanců - mějte je v samostatné tabulce. Tímto způsobem může tabulka Zaměstnanec zůstat štíhlá, průměrná a velmi efektivní, za předpokladu, že nemusíte vždy v rámci svých dotazů vybírat i fotografii zaměstnance.

Pokud jde o skupiny souborů, podívejte se na úvod do Files and Filegroup Architecture. V zásadě byste buď hned od začátku vytvořili svou databázi se samostatnou skupinou souborů pro velké datové struktury, nebo přidali další skupinu souborů později. Říkejme tomu „LARGE_DATA“.

Nyní, kdykoli chcete vytvořit novou tabulku, která potřebuje uložit sloupce VARCHAR(MAX) nebo VARBINARY(MAX), můžete zadat tuto skupinu souborů pro velká data:

 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

Podívejte se na úvod MSDN o souborových skupinách a pohrajte si s ním!



  1. Sjednocení serveru SQL, ale udržujte pořádek

  2. Nejlepší způsob, jak provést víceřádkové vkládání v Oracle?

  3. Jak vytvořit tabulku pomocí výběrového dotazu v SQL Server?

  4. Oracle SQL:Jak používat více než 1000 položek uvnitř klauzule IN