同题看到一个文档上说,想比char , INNODB最好用varchar,这个可以理解,但是为什么MYISAM建议用定长的数据列?为什么呢为什么呢
解决方案 »
- 请教如何使用变量来记住上一条记录的字段值
- MySQL check约束怎么不起作用?
- 服务器上配置的mysql数据库,运行大概十几个小时,就会自动关闭。
- 64位as5.2 安装mysql4.0.27 时候错误(如下) 如何解决
- Mysql中如何装载XML格式的文件的内容
- Linux下如何禁止MySQL随系统自动启动?
- 急,MYSQL是否有操作日志,在哪里?在线等待
- update后,mysql_affected_rows()返回为0时,如何区分是因为没有匹配上条件,还是因为更新字段和原先字段一样的情况
- MySQL是装在哪里用的?Windows上可以用吗?谁能简要的介绍一下
- 写sql问题?
- 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索引包括了可以直接定位到数据行的指针信息.要是数据行的存储空间一定的话,可以直接根据此来更快的定位信息;