2010-07-01 176 views
1

我正在爲自己開發一個URL書籤應用程序(PHP和MySQL)。有了這個應用程序,我將在MySQL中存儲URL。在MYSQL中存儲URL值

問題是,我應該將URL存儲在TEXT列中,還是應該首先解析URL並將其組件(主機,路徑,查詢,片段)存儲在一個表的不同列中?後者也給了我通過對服務器進行分組來生成統計數據的機會,或者我應該將服務器存儲在單獨的表中並使用JOIN。你怎麼看?

謝謝。

回答

5

我會把它們存儲在TEXT列中開始。隨着應用程序的增長,如果您真的想要,可以構建解析和分析功能。從它聽起來像,這一切都只是現在的餡餅天空功能。做你需要的東西,讓基本的應用程序先運行起來,這樣你就可以使用一些東西。你總是可以重構並從那裏去。

+0

第一步確實是存儲原始數據,之後您可以隨時處理原始數據以進行(統計)分析,只要您認爲合適。 – wimvds 2010-07-01 15:23:38

1

答案取決於你將來如何使用這些數據。 如果你喜歡分析URL拆分的不同部分,他們是要走的路。

如果不是。 INSERT和SELECT一樣,如果將它們存儲在一個字段中,速度會更快。

如果您知道網址不再更長,那麼出於性能原因,255個字符,varchar(255)會比文本更好。

+1

有不同的因素,所以你不能盲目地說varchar比文字表現要好。例如,MyISAM存儲引擎會將所有文本列視爲固定的,除非您有一個文本或blob列,在這種情況下,它們都是可變長度的。然後還有如何訪問數據。爲數據選擇最佳數據類型,而不是更好的性能感知。如果表現受到影響,請做基準並從那裏開始。 – Timothy 2010-07-01 14:46:02

0

如果你認真的事情,你會用它來獲取有趣的數據,那麼當然,做一系列的列。說實話,我想說它可能會更容易做到這一點,但作爲一個單一的列。

另外,不要忘記,如果你想以後來回轉換,很容易。單個到多個只是一個SELECT;正則表達式; INSERT [放入另一張桌子];多對一隻是INSERT SELECTCONCAT