【发布时间】:2012-05-26 00:04:08
【问题描述】:
如何最好地为(mysql)数据库中的 varchar/text/... 列选择大小(假设用户可以在文本区域中键入的文本最多为 500 个字符),考虑到用户还可能会使用格式(html/bb 代码/...),这对用户不可见并且不应该影响最大 500 个字符的文本大小...??
1) 理论上,为了防止任何错误,varchar 大小必须几乎是无限的,如果用户例如使用 20 个这样的链接(http://[huge number of chars])或其他任何... - 或不?
2) 您应该/可以将格式保存在单独的列中,例如不给索引(如 FULLTEXT)错误的值(包含在格式中但不在实际文本中的单词)?
如果是,如何最好地做到这一点?你还记得在什么时候使用了格式,保存这个点和格式,并在输出时把这些信息放在一起?
(php/mysql, java script, jquery)
非常感谢您!
【问题讨论】:
-
这可能是错误的,但根据我的经验,当存储任何您知道“可能”超过您的思维限制的内容时,请将其设置为
text。 -
@Gavin:谢谢,刚刚我读到
text比varchar慢,至于文本mysql 必须执行行读取(见forums.mysql.com) -
如果是这种情况,那么您必须依靠第三方解决方案来防止用户使用超过 xx 个字符。出于全文搜索的目的,我能想到的唯一解决方案是将普通内容存储在一列中,并将文本存储在另一列中而不进行任何格式化。
-
@Gavin:好的,谢谢 Gavin! :)
-
@Chris Slower 什么?什么是“较慢”和什么是“较快”通常会根据您的使用模式而变化。我不是 MySQL 如何存储 BLOB 的专家,但 DBMS 必须将它们部分或完全存储在行之外,这实际上会使行更窄,加快不接触 BLOB 的操作。
标签: php database validation database-design input