【问题标题】:What is the best way to store a URL value using MySQL?使用 MySQL 存储 URL 值的最佳方法是什么?
【发布时间】:2026-02-04 14:35:01
【问题描述】:

我正在考虑将 URL 值存储在我的数据库中,但我知道有些 URL 有时会变得非常长。我认为我的 MySQL 数据库是 5.0 版。

我正在考虑使用。

VARCHAR(255) 

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

TEXT 

【问题讨论】:

  • 根据您的需要,您使用 URL 缩短(IE:TinyURL)并存储缩短的版本。
  • @OMG Ponies:这是在创建另一个外部依赖项。
  • 255 太短了,正如其他人所指出的那样。如果按照规格进行,则至少需要 2K。问题是:你想用它做什么?只是按原样存储还是作为文本处理?这将为您提供类型(BLOB 或 VARCHAR/TEXT)
  • @OMG Ponies - 这是一个可怕的想法。例如,那些 TinyURL 会永远存在吗?
  • @timdev:tinyurl.com 在其主页上说一个微小的 URL“永不过期”。但是我从不使用 URL 缩短服务。

标签: mysql mysql-5.0


【解决方案1】:

在 MySQL 5.0 中VARCHAR 的最大长度是 65536,所以你不限于 255。

【讨论】:

  • 是的,TEXT 有点矫枉过正
  • 我以为只有5.0.3及以后的版本才有
  • @mii:我明白了,你使用的是 5.0.0。运气不好!
  • @mii,是的,运气不好。顺便说一句,当你说你使用 MySQL 5.0 时,我想大多数读者会认为你的意思是比 5.0.0 更高的版本也许你有升级的动力。 ;-)
【解决方案2】:

Maximum URL lengths 对于不同的浏览器是不同的。您最好的选择是确定您希望支持的长度,然后在 VARCHAR 上设置大小(如果它适合 VARCHAR 最大长度)。如果您需要使用 TEXT,请询问原因。

【讨论】:

  • 由于 IE 最多支持 2,083 个字符,您可以决定使用 VARCHAR(2083)。 :-)
  • @AboutDev:现在我们知道它适用于 MySQL 5.0.3 之前的版本,这不会发生 :(
  • 是的。如果您确实需要支持这么多字符,一个可能的解决方案是制作一个单独的 URL 表并将 URL 的元素作为单独的列存储在其中......例如服务器,yadda yadda。
【解决方案3】:

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

您的问题的答案取决于您是否希望或在多大程度上将其编入索引。您可能想要索引它,但您可以使用前缀索引,这将节省索引中的大量空间并且几乎具有选择性。不利的一面是,如果您想按顺序对 URL 进行排序,前缀索引将无法做到这一点,因此它需要一个文件排序。

【讨论】:

    最近更新 更多