深入MySQL数据库的索引

时间:2009-02-26 15:27:00 

索引是加速表内容访问的主要手段,特别对涉及多个表的连接的查询更是如此。这是数据库优化中的一个重要内容,我们要了解为什么需要索引,索引如何工作以及怎样利用它们来优化查询。本节中,我们将介绍索引的特点,以及创建和删除索引的语法。

索引的特点

所有的MySQL列类型能被索引。在相关的列上的使用索引是改进SELECT操作性能的最好方法。

一个表最多可有16个索引。最大索引长度是256个字节,尽管这可以在编译MySQL时被改变。

对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。对于BLOB和TEXT列,你必须索引列的前缀,你不能索引列的全部。

MySQL能在多个列上创建索引。一个索引可以由最多15个列组成。(在CHAR和VARCHAR列上,你也可以使用列的前缀作为一个索引的部分)。

虽然随着 MySQL 的进一步开发创建索引的约束将会越来越少,但现在还是存在一些约束的。下面的表根据索引的特性,给出了 ISAM 表和 MyISAM 表之间的差别:

表2-1 通道信息特征字对照表

索引的特点 ISAM 表 MyISAM 表

NULL 值

BLOB 和 TEXT 列

每个表中的索引数

每个索引中的列数

最大索引行尺寸

不允许

不能索引

16

16

256 字节 允许

只能索引列的前缀

32

16

500 字节

从此表中可以看到,对于 ISAM 表来说,其索引列必须定义为 NOT NULL,并且不能对 BLOB 和 TEXT 列进行索引。MyISAM 表类型去掉了这些限制,而且减缓了其他的一些限制。两种表类型的索引特性的差异表明,根据所使用的 MySQL 版本的不同,有可能对某些列不能进行索引。例如,如果使用3.23 版以前的版本,则不能对包含 NULL 值的列进行索引。

标签:mysql,索引,数据库
0
投稿

猜你喜欢

  • 自适应css布局——流动布局新时代[译]

    2009-08-13 12:28:00
  • 三种禁用FileSystemObject组件的方法

    2007-09-23 15:52:00
  • CSS自适应宽度圆角按钮

    2007-11-20 11:38:00
  • JavaScript中的私有成员 Javascript教程

    2008-12-02 17:57:00
  • PHP实现表单处理方法详解

    2023-05-25 07:39:18
  • 如何在页面中快捷地添加翻页按钮?

    2010-06-26 12:33:00
  • 前端来看看 maxthon bugs

    2008-09-23 18:35:00
  • 使用SQL语句 INNER JOIN 联接表

    2008-04-27 20:31:00
  • 如何利用SQL Server 2005中的模板参数

    2009-01-23 15:02:00
  • Css Reset(复位)整理

    2008-09-09 21:58:00
  • 分布式DBA:SQL存储过程知识总结

    2009-02-24 17:17:00
  • 微软补丁KB967723造成MySQL频繁无法连接

    2009-11-03 14:28:00
  • XMLHTTP 使用代理获取数据asp代码

    2010-03-22 14:40:00
  • 常见SQL Server 2000漏洞及其相关利用

    2007-10-01 14:45:00
  • ASP中Request对象获取客户端数据的顺序

    2007-09-22 10:36:00
  • 利用色轮选择颜色搭配[译]

    2009-10-31 18:24:00
  • 菜鸟课堂:玩转MySQL数据库 性能优化八法

    2009-03-25 14:44:00
  • 浏览器是怎样工作的(一):基础知识

    2012-05-09 20:32:48
  • 《悟透JavaScript》之 甘露模型

    2008-06-09 14:03:00
  • 你是真正的用户体验设计者吗? Ⅱ

    2008-03-21 12:30:00
  • asp之家 网络编程 m.aspxhome.com