同题看到一个文档上说,想比char , INNODB最好用varchar,这个可以理解,但是为什么MYISAM建议用定长的数据列?为什么呢为什么呢
解决方案 »
- 在线等:SQL语句修改
- 高难度sql语句挑战.搜索关键字相关性查找
- psql支持递归查询吗?
- 安装mysql成功 但是/var/lib/mysql 文件目录下是空的 ,没有 mysql test
- MYSQL数据的检索效率
- 在asp.net中对mysql数据怎样进行时间段查询?
- MySQL乱码问题
- 一个简单问题
- 用snort+mysql+acid做的入侵检测,数据写不到库里去,求解。
- 关于不重复查询数据的效率方法
- com.mysql.jdbc.CommunicationsException: Communications link failure
- 在mysql用这个算法,是否能保证分批处理了全部记录,并每条记录只处理了一次
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖
首先,官方提供的,就应该是可用的,不应该类型不同 性能 相差很多。
也就是说不管那种存储引擎,太垃圾的就别提供,或者是mysql开发团队在家优化好了再拿出来。
那么,我觉得没有必要太考虑char 还是vchar,的性能。相差应该不太多。
而是从他们的功能区别,来区分使用。
跟你的数据长度分布情况有关。
e.g. char(100), varchar(100)
如果你的数据的实际长度总是在95或95以上,那么拿char(100),每个列最多浪费5个字符,不算多,却可以得到很好的存储性能。
但是如果你的数据长度可变范围如果很大,从1个字符到100个字符都有可能,而且有很多都是70个字符以下的,那就不值得使用char(100)了。这只是打个比方。
静态格式是MyISAM表的默认存储格式。当表不包含变量长度列(VARCHAR, BLOB, 或TEXT)时,使用这个格式。每一行用固定字节数存储。
我觉得还有跟索引有关系:
INNODB和MYISAM的索引不一样,MYISAM索引包括了可以直接定位到数据行的指针信息.要是数据行的存储空间一定的话,可以直接根据此来更快的定位信息;