对于建立的索引(姓,名字,data)

5.1、索引对一下的查询类型有效

  1、全值匹配:能查找姓+名为ALLEN、出生日期为1990-11-05的人;

  2、最左前缀匹配:可以查找姓为ALLEN的人;即只使用索引的第一列;

  3、列前缀匹配:可以查找姓为J开头的人;这里索引也只使用了第一列;

  4、范围匹配:可以查找姓以开头为A-J的人;这里索引也只使用了第一列;

  5、精确匹配前一列,范围匹配后一列;

  6、只访问索引的查询;

  7、ORDER BY 也满足索引;

5.2、索引的限制

  1、没法找到特定名字的人;

  2、没法找到以某个J结尾的姓;

  3、没法跳过索引,即没有姓A,出生日期为XX的人;

  4、范围查询的右边索引失效,例如姓为AX,名字like b% ,出生日期为199-01-01的人,只使用了前两列索引;

5.3 高性能索引策略

  1、独立的列,以下SQL失效:selext * from user where id +1 = 10;

  2、选择合适的索引列,

  3、聚族索引与非聚族索引(innoDB和myisam引擎的区别)

  尽量使用自增主键而不是uuid,因为这样会导致数据没有了聚集属性;

  4、索引覆盖-如果查询条件中已经包含了要查询的值,那么对于聚族索引而言,就不需要进行二次回查;

    例如table 有 (id,name)的联合索引,当sql=select id ,name from table 时,就会触发索引覆盖;

  5、多表JOIN时,只有第一个表的ordery by条件能使用索引;

  关于order by 的生效和失效条件

  对于table有联合唯一索引(a,b,c)

以下索引生效:

  where a= x order by b;能使用索引,因为a是常量,而a+b组成的最左前缀索引;

  where a >x order by a,b;能使用索引,因为a+b组成了联合索引;

以下索引失效:

  where a = x order by b desc,c desc ,因为两个不同的排序方向,但是索引列都是正序排序;

  where a =x order by b ,d 使用了一个不在索引中的列;

  where a =x ordery c ,a+c没法组合最左前缀组合;

  where a > x order by  b,c ;失效,a使用了范围查询条件,b,c组合失效;

  6、使用In sex来不选择性别,让范围查询的字段(例如age)排到最后;

  

    

五、MYSQL的索引的更多相关文章

  1. MySQL(五) MySQL中的索引详讲

    序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是 ...

  2. MySQL 第五篇:索引原理与慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  3. mysql高性能索引策略

    转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...

  4. 手把手教你mysql(十)索引

    手把手教你mysql(十)索引 一:索引的引入 索引定义:索引是由数据库表中一列或者多列组合而成,其作用是提高对表中数据的查询速度. 类似于图书的目录,方便快速定位,寻找指定的内容,如一本1000页的 ...

  5. mysql数据库索引类型和原理

    索引初识: 最普通的情况,是为出现在where子句的字段建一个索引.为方便讲述,我们先建立一个如下的表. CREATE TABLE mytable ( id serial primary key, c ...

  6. SQL优化 MySQL版 - 索引分类、创建方式、删除索引、查看索引、SQL性能问题

    SQL优化 MySQL版  - 索引分类.创建方式.删除索引.查看索引.SQL性能问题 作者 Stanley 罗昊 [转载请注明出处和署名,谢谢!] 索引分类 单值索引 单的意思就是单列的值,比如说有 ...

  7. mysql 不同索引的区别和适用情况总结

    最近在做sql优化,看到一篇有关sql索引不错的文章,转载一下. 一.索引类型 普通索引:INDEX 允许出现相同的索引内容 (normal) 唯一索引:UNIQUE 不可以出现相同的值,可以有NUL ...

  8. MySQL之索引原理和慢查询优化

    一 介绍 为何要有索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此对查询语句 ...

  9. B+Tree原理及mysql的索引分析

    一.索引的本质 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构.提取句子主干,就可以得到索引的本质:索引是数据结构. 我们知道,数据库查询是数据库的最主要功能之 ...

  10. MySQL之索引原理

    --------------------------------------------------------------------------------堕落的状态,无疑是慢性自杀.想想自己为什 ...

随机推荐

  1. 用VisualAssist在Visual Studio上设置快捷键快速编程

    一  在Visual Studio上安装VisualAssist工具: 链接:https://pan.baidu.com/s/1uaeRFTvY4p7LNoDvQFEU5A 提取码:j1ws 安装后, ...

  2. HTML 5 Web Workers

    什么是Web Worker? web worker 是运行在后台的 JavaScript,不会影响页面的性能. Web Worker有什么用? JavaScript语言采用的是单线程模型,也就是说,所 ...

  3. wordpress使用七牛云加速

    一.准备工作. wordpress搭建的网站 七牛云账号 二.简要步骤 1.wordpress安装七牛云插件. WordPress七牛镜像存储插件已经被WordPress官方收录,可以直接在wordp ...

  4. Python3 sqlacodegen 根据已有数据库生成 ORM 使用的 model.py

    pip install sqlacodegen pip install pymysql sqlacodegen mysql+pymysql://username:password@127.0.0.1: ...

  5. 在 Azure 中管理 Windows 虚拟机的可用性

    了解如何设置和管理多个虚拟机,以确保 Azure 中 Windows 应用程序的高可用性. 也可以管理 Linux 虚拟机的可用性. Note Azure 具有用于创建和处理资源的两个不同的部署模型: ...

  6. MySQL crash-safe replication(2):

    MySQL数据库的成功离不开其replicaiton(复制),相对于Oracle DG和Microsoft SQL Server Log Shipping来说,其简单易上手,基本上1,2分钟内根据手册 ...

  7. css基础内容

    css基础内容 CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离 ...

  8. 【转】Mysql学习---MySQL悲观锁中的排它锁

    [原文]https://www.toutiao.com/i6595305814087434760/ 悲观锁中的排它锁. 排它锁关键字:for update 特点:会锁住行或者表,防止其他事务进行修改操 ...

  9. 第五次作业 hql查询

    hql查询是基于对象的查询,不是基于表的查询. 1.hql的简单查询 @Test public void queryUsers() { //简单查询 SessionFactory sf = null; ...

  10. MySQL主从延迟如何解决?

    我们知道生产环境中经常会遇到MySQL主从延迟问题,从原理上也能看出主库的事务提交是并发模式,而从库只有一个SQL线程负责解析,所以本身上就可能存在延迟. 延迟的主要原因在于: 1.从库的配置往往没有 ...