有很多次我想將圖像保存到SQL Server。我看過一些做法保存圖像:在SQL Server中保存圖像的最佳實踐
1)上傳並保存圖片到服務器,保存表
2)保存圖像爲二進制
3內的路徑)保存圖像爲base64字符串
4)使用BLOB(我還沒有研究過它是如何工作的)
你知道當你向服務器請求圖像時哪種「方式」更快嗎? 你知道哪個「方法」更好,以免讓SQL服務器變慢嗎? 你是否知道其他「更好」的方法?
謝謝!
有很多次我想將圖像保存到SQL Server。我看過一些做法保存圖像:在SQL Server中保存圖像的最佳實踐
1)上傳並保存圖片到服務器,保存表
2)保存圖像爲二進制
3內的路徑)保存圖像爲base64字符串
4)使用BLOB(我還沒有研究過它是如何工作的)
你知道當你向服務器請求圖像時哪種「方式」更快嗎? 你知道哪個「方法」更好,以免讓SQL服務器變慢嗎? 你是否知道其他「更好」的方法?
謝謝!
有關此主題,Microsoft已完成some research,並得出結論,這取決於您的圖像的大小。如果你的大多數圖像是< 256Kb,你應該使用VARBINARY。另一方面,如果它們高於1Mb,則應使用FILESTREAM(通常存儲在數據庫文件外的文件系統中)。
如果您的圖像與其他數據鏈接,將記錄本身與圖像分隔到不同的表格(即創建圖像表格)通常很有用,以便數據表格保持較小且易於操作。
base64。獲取字符串,將其轉換爲客戶端中的image或byte()並使用它? –
它會佔用更多的空間(大約多37%)。什麼是優勢? –
讓我們說你有一個SQL中的圖像。您第一次下載到客戶端並保存它。第二次檢查CHECKSUM以查看base64是否已更改(字符串很容易),如果它刪除了存儲的文件並且您下載了新的文件。使用FILESTREAM可以檢查更改嗎? –
請注意,沒有「最好」的方式普遍,但只有最適合您的具體需求。
「當你從服務器請求圖像時,你知道哪個」方式「更快嗎?」 - 在這種情況下#1,因爲你本質上是將圖像存儲在文件系統中,並且只從數據庫檢索圖像路徑。
「你知道哪個」方法「更好,以免SQL服務器變慢?」 - 再次#1因爲它必須處理更少的數據。 SQL Server更容易檢索表示存儲圖像的路徑的varchar,而不是以任何形式檢索圖像本身。
1號是最簡單,可能比較容易建立,但請注意,也有缺點:
可能的重複[在SQL Server中存儲圖像?](http://stackoverflow.com/questions/5613898/what-about-storing-images-in-sql-server) – Lamak
@Lamak它不只是關於Blob或不Blob。我在發佈之前搜索過stackoverflow。我在那篇文章中搜索的是發現者的經驗所說的! –
而且這個鏈接不僅僅是「Blob or Not to Blob」。 _它有很多關於它們的好點 – Lamak