• 高性能MySql阅读笔记第五章--创建高性能的索引1


    创建高性能的索引1

    索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能。

    索引对于良好的性能非常重要。

    索引优化应该是对查询性能优化最有效的手段了,索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能好两个数量级,创建一个真正“最优”的索引经常需要重写查询。

    一、索引的类型

    1.B树索引

    当人们谈论索引的时候,如果没有特别指明类型,那么多半说的是B树索引,他使用B树数据结构存储数据。

    可以使用B树索引的查询类型:全值匹配、匹配最左前缀、匹配列前缀、匹配范围值、精确匹配一列并范围匹配另一列、只访问索引的查询。

    B数树索引的限制:如果不是按照索引的最左列开始查找,则无法使用索引、不能跳过索引中的列、如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查询。

    2.哈希索引

    在MySql中,只有Memory引擎显示支持哈希索引。

    哈希索引只包含哈希值和行指针,而不存储字段值,所以不能使用索引中的值来避免读取行。

    哈希索引数据并不是按照索引值顺序存储的,所以也就无法用于排序。

    哈希索引也不支持部分索引列匹配查找,因为哈希索引始终是使用索引列的全部内容来计算哈希值的。

    哈希索引只支持等值比较查询。

    访问哈希索引的数据非常快,除非有很多哈希冲突。

    如果哈希冲突很多的话,一些索引维护操作的代价也会很高。

    InnoDB引擎有一个特殊的功能叫做“自适应哈希索引”,当InnoDB注意到某些索引值被使用的非常频繁时,他会在内存中基于B树索引之上再创建一个哈希索引。

    如果存储引擎不支持哈希索引,可以模拟像InnoDB一样创建哈希索引,这可以享受一些哈希索引的便利,例如只需要很小的索引就可以为超长的键创建索引。

    3.空间数据索引(R树)

    MyISAM表支持空间索引,可以用作地理数据存储。

    4.全文索引

    全文索引是一种特殊类型的索引,他查找的是文本中的关键词,而不是比较索引中的值。在相同的列上同时创建全文索引和基于值的B树索引不会有冲突,全文索引适用于MATCH AGAINST 操作,而不是普通的WHERE条件操作。

    5.其他索引类别

    还有很多第三方的存储引擎使用不同类型的数据结构来存储索引,例如TokuDB使用分形树索引(fractal tree index)。

    二、索引的优点

    索引可以让服务器快速地定位到表的指定位置。但是这并不是索引的唯一作用。

    1.索引大大减少了服务器需要扫描的数据量。

    2.索引可以帮助服务器避免排序和临时表。

    3.索引可以将随机I/O变为顺序I/O。

  • 相关阅读:
    J2ME 游戏开发之GameCanvas的使用
    J2ME游戏开发之字符串的绘制
    JS数组操作
    什么是LBS?地理位置服务
    js中的this怎么理解
    相机参数
    boost 移植到ARM EP9315
    armlinuxgcc 安装和配置
    小算法 : 水仙花数
    C语言标准库 文件操作
  • 原文地址:https://www.cnblogs.com/zechac/p/5281768.html
Copyright © 2020-2023  润新知