2009-11-26 160 views
0

我正在开发工作中的内容管理系统。我将有一个专栏来保存我们用户的内容(HTML),而我不太清楚要使用哪种专栏类型。我不想任意指定最大长度,但我不知道是否使用LONGTEXT或BLOB字段是矫枉过正。我应该为我的列使用哪种数据类型? [MySQL]

也许有人可以给我一个提示或指向我的某种“最佳实践”文章的方向这些类型的东西? :)

任何帮助表示赞赏

回答

0

您应该将GZip和Base64编码为HTML,然后将其存储在文本列中。

+0

从GZip获得什么优势?我会为压缩做还是还有其他一些我缺少的优点? – Gazillion 2009-11-26 19:18:10

+0

我会说压缩是一个巨大的优势。你可以将你的数据库减少到一半的Web服务器传输时间(可能会夸大,但速度会提高)。此外,随着时间的推移,您将需要更少的HTML存储空间。 – ChaosPandion 2009-11-26 20:13:20

0

使用LONGTEXT所以你可以搜索一下。

+0

如果需要搜索,这将是最好的选择。 – 2009-11-26 19:07:45

+0

谁将通过一个讨厌的HTML块搜索? – ChaosPandion 2009-11-26 19:10:12

+0

从什么时候MySQL要求字段被LONGTEXT搜索? – William 2009-11-26 19:14:10

2

我建议您阅读http://dev.mysql.com/doc/refman/5.0/en/string-type-overview.html,这样您就知道每个字段的大小限制。之后,如果您应该允许更多,则可以根据您对应用程序的理解来选择。

文本 具有65,535(216 - 1)的最大长度文本列字符

媒介文字 与16777215(224 - 1)的最大长度文本列的字符。

长文本 最大长度为4,294,967,295或4GB(232 - 1)个字符的TEXT列。

我认为你应该设置某种限制。例如,可能需要查看其他软件的功能(如Word Press)。

至于ChaosPandion:GZip是二进制的,如果你打算这样做,他应该使用BLOB来代替。

+0

我更新了我对你评论的回答。 – ChaosPandion 2009-11-26 19:08:15

+0

还要记住,文本列(如varchar列)具有可变长度。这意味着它只会占用字段中包含的空间量(与CHAR不同)。它使用的唯一空间是一个2字节的前缀,以便数据库知道字段的总大小。 – William 2009-11-26 19:11:58

相关问题