Moh*_*mad 20 mysql database datafield
我有两个字段:一个用于存储excerpt最大为500个字符的字段,另一个用于存储description最大为10,000个字符的字段.
我应该使用哪些数据类型,TEXT或者VARCHAR?为什么?
在MySQL 5.0.3 VARCHAR之后接受~65000个字符.但这并没有说明为什么我应该使用一种类型或另一种类型.
我的推理,我应该使用VARCHAR的摘录,因为我可以指定一个大小的限制,并TEXT为description外地,因为它的大.
And*_*ndy 14
long VARCHAR以与TEXT/ BLOBfield 相同的方式存储InnoDB(我假设你用于事务性,参照完整性和崩溃恢复,对吗?) - 也就是说,在磁盘上其余表的外部(可能需要)另一个磁盘读取检索).
从存储预期BLOB,TEXT以及长VARCHAR由Innodb以相同的方式处理.这就是为什么Innodb手动将其称为"长列"而不是BLOB.
除非你需要索引这些列(在这种情况下VARCHAR要快得多),没有理由使用VARCHAR过TEXT的长字段-有一些发动机比的优化MySQL调整数据检索根据长度,你应该使用正确的列类型利用这些.
如果您正在使用MyISAM有关该主题的深入讨论,请点击此处.
VARCHAR和之间的一个区别TEXT是,您可以DEFAULT为VARCHAR列声明子句,但不能为TEXT列声明.
@Andy是正确的,InnoDB的同时存储VARCHAR,并TEXT在内部以同样的方式.
FULLTEXT索引都支持VARCHAR和TEXT.在5.6之前,您必须使用MyISAM来获取该类型的索引.在MySQL 5.6中,它最终支持FULLTEXTInnoDB.虽然你应该仔细测试它,因为它似乎返回与 MyISAM中的实现不同的结果.
但是,与MySQL中的任一实现相比,Sphinx Search的功能更快,功能更丰富.请参阅全文搜索投掷中的概述.
@Mohammed问道:
什么时候
VARCHAR被考虑LONG VARCHAR?有人物门槛吗?
如果声明长度最多为255个字节,则可以使用一个字节对给定字符串的长度进行编码.如果声明列的最大长度超过255个字节,它将使用两个字节来编码长度.
您可以将列声明为LONG VARCHAR,但这实际上只是MEDIUMTEXT的别名.
mysql> create table test ( l long varchar);
mysql> show create table test\G
CREATE TABLE `test` (
`l` mediumtext
) ENGINE=InnoDB DEFAULT CHARSET=latin1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12708 次 |
| 最近记录: |