所有,
我正在编写一个可以接收用户生成的文本内容的Web应用程序.其中一些输入将是几个单词,有些将是几句长.在超过90%的情况下,输入将少于800个字符. 输入需要是可搜索的. 输入将包含各种字符集,包括亚洲字符集.站点和数据库基于utf8.
我大致了解VARCHAR和TEXT之间的权衡.我想象的是同时拥有一个VARCHAR和一个TEXT表,并根据它们的大小在一个或另一个上存储输入(这应该由PHP脚本来实现).
您如何看待基于其大小的数据表?另外,为各种大小范围创建几个VARCHAR表是否有意义?我的猜测是,我将获得围绕几个密钥大小聚集的大量用户输入.
谢谢,
JDelage
根据输入的大小将值存储在一列与另一列中将增加应用程序的复杂性,而不是它的价值.
对于MySQL中的VARCHAR vs TEXT,这里有一个很好的讨论,MySQL:Large VARCHAR vs TEXT.
"棘手"部分是对该字段进行全文搜索,这需要使用MyISAM存储引擎,因为它是唯一支持全文索引的引擎.另外值得注意的是,有时以复杂系统架构为代价,使用像Apache Solr这样的东西可能是值得的,因为它可以更有效地执行全文搜索.很多人在他们的MySQL数据库中拥有大部分数据,并使用类似Solr的东西来进行文本列的全文索引,然后使用该索引进行花哨的搜索.
Re:Unicode.我已经使用Solr对带有Unicode字符的文本进行全文索引.