使用MySQL存储URL值的最佳方式是什么?

问题描述:

我正在考虑将URL值存储在我的数据库中,但我知道一些URL有时会变得很可笑。我认为我的MySQL数据库是5.0版本。使用MySQL存储URL值的最佳方式是什么?

我正在考虑使用。

VARCHAR(255) 

但这只会工作很长时间。所以我应该使用。

TEXT 
+0

根据您的需要,您使用URL缩短(IE:TinyURL)并存储缩短版本。 – 2009-11-15 03:37:09

+7

@OMG小马:这是创建另一个外部依赖。 – 2009-11-15 03:41:23

+2

255太短,其他人都指出。如果按照规格行事,您至少需要2K。问题是:你想用它做什么?只是按原样存储或视为文本?这将给你的类型(BLOB或VARCHAR/TEXT) – dajobe 2009-11-15 03:43:32

一个VARCHAR在MySQL 5.0中的最大长度为65536,所以你不仅限于255

+0

是的,'TEXT'有点过大 – 2009-11-15 03:30:20

+0

我以为它只在5.0.3及更高版本中可用 – mii 2009-11-15 03:32:50

+0

@mii:我明白了,你正在使用5.0.0。倒霉! – 2009-11-15 03:37:55

Maximum URL lengths是不同的浏览器不同。您最好的选择是决定您希望支持的长度,然后将其大小设置为VARCHAR(如果它适合VARCHAR最大长度)。如果你需要使用TEXT,请问为什么。

+4

由于IE支持最多2,083个字符,因此您可以决定使用VARCHAR(2083)。 :-) – AboutDev 2009-11-15 03:31:48

+0

@AboutDev:现在我们知道它是用于MySQL 5.0.3以前的版本,那不会发生:( – 2009-11-15 03:42:24

+0

是的。如果你真的需要支持这么多字符,一个可能的解决方案是创建一个单独的URL表并存储URL中的元素作为单独的列......例如服务器,yadda yadda。 – AboutDev 2009-11-15 03:53:55

不要使用5.0.0或者任何.0版本。这甚至没有作为GA发布。

您的问题的答案取决于您是否想索引它或多少。你可能想索引它,但你可以使用一个前缀索引,这将节省索引中的空间负载,并且几乎是有选择性的。缺点是,如果你想按顺序排列URL,前缀索引不会这样做,所以它需要一个文件夹。