大家知道,定义text和longtext 区别是,前者最大只能存65535个字节的数据,后者可以存几十亿的字节,肯定不用考虑不够存的问题的了。现在我要设计个字段,比如,用来存html内容的,其长度估且认为不会超出65535个字节吧。
我的问题是:分别设计这两个类型的字段,同样存2万个汉字,两者有什么区别呢?有人说,设计用longtext类型浪费空间的了,请问,是的话,那具体它浪费了多少空间呢?
或者说,它比用text类型,多用了多少磁盘空间呢?比如:1K?10K?有人说,设计用longtext类型,执行查询时,效率变低了,请问,是的话,那具体低了多少呢?
或者说,执行同样的查询,慢了多少毫秒或秒呢?能否在用户可接受不?即影响用户查询等操作体验不?注:之所以问这个问题,我是这样认为的,在难以保证存储内容大小的情况下,我宁愿选大的存储类型,
这个有个好处,再也不用担心数据溢出问题,可靠性显然增强。用用点空间无所谓啊,现在磁盘空间都大的呢?
就算效率低点,只要不影响体验,延迟一点点,我也认为关系不大。稳定才是首先。
不知各位数据库达人,认同我的想法不?

解决方案 »

  1.   

    用什么字符集?UNICODE(utf8)?汉字占3字节 
      

  2.   

    utf-8不是双字节不?不管是英文还是汉字,都是双字节吧?
      

  3.   

    text和longtext 区别是text     用三个字节标记 实际内容的长度
    longtext 用四个字节标记 实际内容的长度
    理论上是越小越简单的数据类型更好,但要考虑数据的实际范围
      

  4.   

    纠正一下text和longtext 区别是text       用两个字节头标记 实际内容的长度
    mediumtext 用三个字节头标记 实际内容的长度
    longtext   用四个字节头标记 实际内容的长度
    理论上是越小越简单的数据类型更好,但要考虑数据的实际范围,或许您可以使用mediumtext
      

  5.   

    text和longtext 都是变长字符串类型,实际存储需求是字符串(L)的长度,加上一个记录字符串长度的字节。对于字符串'abcd',L是4,存储需要5个字节。在效率方面,字符串类型的查询一直不怎么样,可是模拟哈希索引来加快查询效率。
      

  6.   

    http://student.csdn.net/space.php?uid=2359&do=blog&id=16040
    http://sunfish.blog.51cto.com/417500/142577
    参考一下,3个字节
      

  7.   

    哦,如果是这样字算的话,那就多用了一个字节的了,那存两万个汉字,就要比text类型多用了2万个字节的了?能否这样算呢?
      

  8.   

    不是 同样的内容 longtext仅比text多两个字节而已
      

  9.   

    现在我要设计个字段,比如,用来存html内容的,其长度估且认为不会超出65535个字节吧。
    我的问题是:分别设计这两个类型的字段,同样存2万个汉字,两者有什么区别呢?
    理论上没有什么区别,不过汉字的编码要注意了,2万个汉字UTF8的编码下就是6万个字节。
      

  10.   

    这个看和什么比,没有比较就谈不上什么快慢。 如果和INT比,当然是慢了,但INT显然不能存储一段HTML代码。 和VARCHAR比当然也会慢,但VARCHAR的最大长度有限制。 原则上是选择最小的数据类型以提高效率(存储和速度),但你的应用下,已经没有其它选择进行比较了。
    这个工作需要和用户仔细协商,总是要找出一个最大存储容量。 你的情况,是你自己假设了一个最大长度,并不是没有。 你自己假定了将来数据有可能更长,所以大的存储类型选择。这并没有任何错误。除非有人能非常准确的说明,这个字段,十年内,最大长度是多少。但如果已知最大长度仅为100字节的情况下,如果还去用longtext,那显然不是高效的和无理的。