2012-07-12 65 views
0

假設我正在建立網上商店的網站並擁有產品數據庫。所有這些產品都有自己的頁面,並擁有各自的URL。爲了提高性能而犧牲數據庫大小,反之亦然?

如果URL始終可以從數據庫中的其他數據派生出來(讓我們假裝每個產品都可以在http://example.com/ [PRODUCT.CATEGORY]?prod = [SHA1(PRODUCT.NAME)]中找到),將URL存儲在表的另一個字段中是否明智?

一方面,它是重複的數據(它可以很容易地從表中的其他現有字段派生)。另一方面,這些URL在任何地方都可以使用,並且每次需要時都會浪費重新獲取它們。

是否有這種情況下的最佳做法?

回答

0

您不應該在數據庫中存儲任何網址。

您應該在運行時基於您正在查找的數據創建URL。

顯示產品的頁面可以忽略它需要的任何字段。

您還應該使用ID字段而不是product.name。除非你試圖隱藏用戶的某些產品,否則沒有理由去欺騙密鑰。

記住使用主鍵查找記錄是獲取該記錄的最快方法。

+0

SHA1只是一個例子,我想這表明生成URL可能比簡單的追加操作更耗時。但是,謝謝,我認爲這是我正在尋找的答案。 – tom 2012-07-12 17:28:38

+0

「使用主鍵查找記錄是獲得該記錄的最快方式」 - 不一定。訪問數據的最快訪問路徑取決於很多與主鍵無關的事情:存儲格式,索引,查詢計劃以及可用於同一操作的其他鍵。 – sqlvogel 2012-07-12 20:56:42

+0

@sqlvogel - 雖然可能有特定的情況下可以比使用PK更快地創建記錄,但我從來沒有看到過。解釋其他任何索引策略如何比整數PK查找更快?一般來說,獲得記錄的最快方法是使用PK。 – 2012-08-04 07:28:59

相關問題