MySQL表设计优化与索引 (五)

来源:Asp之家 时间:2010-10-25 20:24:00 

当存储一个CHAR值时, Mysql会除去尾随空间, 这个行为有点让人困惑, 用一个具体的例子来看一下: 首先 ,创建一个只有一个CHAR(10)字段的表并存储一些值在里面:

mysql> CREATE TABLE char_test( char_col CHAR(10));

mysql> INSERT INTO char_test(char_col) VALUES

-> (’string1′), (‘ string2′), (’string3 ‘);

然后检索这些值, 尾部空间被除掉了:

mysql> SELECT CONCAT(“‘”, char_col, “‘”) FROM char_test;

+—————————-+

| CONCAT(“‘”, char_col, “‘”) |

+—————————-+

| ’string1′ |

| ‘ string2′ |

| ’string3′ |

+—————————-+

如果存储同样的值在VARCHA(10)的字段里, 在检索的时候得到的结果如下:

mysql> SELECT CONCAT(“‘”, varchar_col, “‘”) FROM varchar_test;

+——————————-+

| CONCAT(“‘”, varchar_col, “‘”) |

+——————————-+

| ’string1′ |

| ‘ string2′ |

| ’string3 ‘ |

+——————————-+

数据的存储是存储引擎相关的, 并不是所有的存储引擎用同样的方式来处理定长和变长类型。Memory存储引擎使用定长的行, 因而它分配尽可能多的空间给变长字段来存储数据。 而Falcon则使用变长字段来存储, 即使对于CHAR字段也是如此。 但是填充和去尾是一致de 这是因为这个是 油MySql服务器自己处理的。

CHAR和VCHAR的兄弟类型分别是存储二进制数据的BINARY和VARBINARY, 二进制字符串与普通的字符长相似, 不过他们是以字节存储的, 而不是字符,填充也不一样 , Mysql用\0(0 字节)而不是空格填充二进制数据, 而在检索时不会把后面的填充值去掉。

对于需要存数二进制数据的活着需要Mysql对值进行字节的比较而不是基于字符的比较时, 二进制数据类型非常哟用。基于字节的比较的优势不只是大小写不敏感的好处, Mysql在比较二进制数据时, 通过字节表示的数值比较的方式进行的, 因为二进制数据相对与基于字符的比较更简单, 也更快。

记住长度单位是字符, 而不是字节, 一个多字节字符集要多个字节来存储。

标签:mysql,索引
0
投稿

猜你喜欢

  • SQL Server中两种修改对象所有者的方法

    2009-01-15 13:10:00
  • 网站升级兼容firefox经验小谈

    2007-10-28 20:28:00
  • Microsoft SQL Server 2000安装问题集锦

    2008-12-10 14:26:00
  • 用Dreamweaver MX设计各种网页鼠标样式

    2008-10-04 10:18:00
  • 讲解MaxDB数据库和MySQL的数据库的主要差别

    2012-02-25 20:04:34
  • Z-Blog垃圾留言判定新方法

    2009-07-06 13:04:00
  • Yahoo!网站性能最佳体验的34条黄金守则—内容

    2008-05-13 12:14:00
  • 玩转CSS3色彩[译]

    2010-01-13 13:02:00
  • form的submit方法和submit事件(onsubmit)

    2008-09-28 13:29:00
  • 在SQL Server 2005数据库中更改数据架构

    2009-01-19 13:06:00
  • 分享很实用的css圆角写法[百度有啊提取]

    2009-01-06 13:05:00
  • 好用的JS图片预加载类

    2007-08-13 13:49:00
  • asp无组件备份与还原数据库

    2007-09-24 13:19:00
  • 非常详细的IFRAME的属性参考手册

    2008-02-12 12:45:00
  • Oracle学习笔记(一)

    2012-01-05 18:51:44
  • WinHTTP Services 5.1 参考资料

    2010-03-27 20:49:00
  • Access 2003开发者扩展工具集概述

    2009-03-19 18:32:00
  • ORACLE数据库事务隔离级别介绍

    2012-10-07 10:43:36
  • ASP从数据库中获取下载文件

    2007-10-06 21:17:00
  • [js效果] 图片加载进度实时显示

    2007-09-12 19:27:00
  • asp之家 网络编程 m.aspxhome.com