...

Callwoola

大雄'blog

Home 主页 Blog 博客 Tag标签 GitHub开源 about me关于我


mysql索引原理

索引是对数据库表中一列或多列的值进行排序的一种结构。

在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。

索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。

当表中有大量记录时,若要对表进行查询,第一种搜索信息方式是全表搜索,

是将所有记录一一取出,和查询条件进行一一对比,然后返回满足条件的记录,这样做会消耗大量数据库系统时间, 并造成大量磁盘I/O操作; 第二种就是在表中建立索引,然后在索引中找到符合查询条件的索引值, 最后通过保存在索引中的 ROWID(相当于页码)快速找到表中对应的记录。 索引是一个单独的、物理的数据库结构,

它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。

索引提供指向存储在表的指定列中的数据值的指针,然后根据您指定的排序顺序对这些指针排序。 数据库使用索引的方式与您使用书籍中的索引的方式很相似: 它搜索索引以找到特定值,然后顺指针找到包含该值的行。

在数据库关系图中,可以在选定表的“索引/键”属性页中创建、编辑或删除每个索引类型。

当保存索引所附加到的表,或保存该表所在的关系图时,索引将保存在数据库中。

Mysql索引概述

所有MySQL列类型可以被索引。

对相关列使用索引是提高SELECT操作性能的最佳途径。

根据存储引擎定义每个表的最大索引数和最大索引长度。 所有存储引擎支持每个表至少16个索引, 总索引长度至少为256字节。 大多数存储引擎有更高的限制。

在MySQL 5.1中,对于MyISAM和InnoDB表,前缀可以达到1000字节长。 请注意前缀的限制应以字节为单位进行测量,而CREATE TABLE语句中的前缀长度解释为字符数。 当为使用多字节字符集的列指定前缀长度时一定要加以考虑。

还可以创建FULLTEXT索引。 该索引可以用于全文搜索。 只有MyISAM存储引擎支持FULLTEXT索引,并且只为CHAR、VARCHAR和TEXT列。 索引总是对整个列进行,不支持局部(前缀)索引。

也可以为空间列类型创建索引。 只有MyISAM存储引擎支持空间类型。空间索引使用R-树。

默认情况MEMORY(HEAP)存储引擎使用hash索引,但也支持B-树索引。

  • 文档信息:
  • 版权声明:自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)
  • 发表日期: 2017-07-1417:28:47+0800
  • 更多内容:
  • Feed订阅:
相关内容:

disqus评论区:

0