zoukankan      html  css  js  c++  java
  • MySQL之索引

    索引(在MySQL中也叫做“键(key)”)是存储引擎用于快速找到记录的一种数据结构。 这是索引的基本功能,除此之外,本章还将讨论索引其他一些方面有用的属性。
    索引对于良好的性能非常关键。尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要。在数据量较小且负载较低时,不恰当的索引对性能的影响可能还不明显,但 当数据量逐渐增大时,性能则会急剧下降。
    不过,索引却经常被忽略,有时候甚至被误解,所以在实际案例中经常会遇到由糟糕索引导致的问题。这也是我们把索引优化放在了靠前的章节,甚至比査询优化还靠前的原因。
    索引优化应该是对査询性能优化最有效的手段了。索引能够轻易将查询性能提高几个数量级,“最优”的索引有时比一个“好的”索引性能要好两个数量级。创建一个真正“最 优”的索引经常需要重写査询,所以,本章和下一章的关系非常紧密。

    索引基础

    要理解MySQL中索引是如何工作的,最简单的方法就是去看看一本书的“索引”部分: 如果想在一本书中找到某个特定主题,一般会先看书的“索引”,找到对应的页码。

    在MySQL中,存储引擎用类似的方法使用索引,其先在索引中找到对应值,然后根据 匹配的索引记录找到对应的数据行。假如要运行下面的査询:

    mysql> SELECT first_ame FROM sakila.actor WHERE actor_id = 5;

    如果在actor_id列上建有索引,则MySQL将使用该索引找到actor_id为5的行,也 就是说,MySQL先在索引上按值进行査找,然后返回所有包含该值的数据行。

    索引可以包含一个或多个列的值。如果索引包含多个列,那么列的顺序也十分重要,因 为MySQL只能高效地使用索引的最左前缀列。创建一个包含两个列的索引,和创建两 个只包含一列的索引是大不相同的,下面将详细介绍。

    如果使用的是ORM,是否还需要关心索引?

    简而言之:是的,仍然需要理解索引,即使是使用对象关系映射(ORM)工具。

    (ORM)工具能够生产符合逻辑的、合法的查询(多数时候),除非只是生成非常基本 的查询(例如仅是根据主键查询),否则它很难生成适合索引的查询。无论是多么 复杂的(ORM)工具,在精妙和复杂的索引面前都是“浮云”。读完本章后面的内容 以后,你就会同意这个观点的!很多时候,即使是查询优化技术专家也很难兼顾到 各种情况,更别说(ORM) 了。

  • 相关阅读:
    一起谈.NET技术,深入ASP.NET 2.0的提供者模型(2) 狼人:
    一起谈.NET技术,从.NET中委托写法的演变谈开去(上):委托与匿名方法 狼人:
    一起谈.NET技术,将Flash 嵌入WPF 程序 狼人:
    一起谈.NET技术,数组排序方法的性能比较(中):Array.Sort<T> 实现分析 狼人:
    人一生当中最应该珍惜的十种人
    《程序员的第一年》复习一下C#的【封装 多态 继承 简单计算器源码实例】
    myeclipse 修改模板
    三星将在百思买零售店内开设1400家体验店
    谷歌Q3推Android本 蚕食自己平板市场
    Spring Setting
  • 原文地址:https://www.cnblogs.com/zhaokejin/p/15626217.html
Copyright © 2011-2022 走看看