2010-07-01 76 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