联合索引又叫复合索引。对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。例如索引是key index (a,b,c)。 可以支持a |   a,b| a,b,c 3种组合进行查找,但不支持 b,c进行查找 .当最左侧字段是常量引用时,索引就十分有效。

两个或更多个列上的索引被称作复合索引。

利用索引中的附加列,您可以缩小搜索的范围,但使用一个具有两列的索引 不同于使用两个单独的索引。复合索引的结构与电话簿类似,人名由姓和名构成,电话簿首先按姓氏对进行排序,然后按名字对有相同姓氏的人进行排序。如果您知 道姓,电话簿将非常有用;如果您知道姓和名,电话簿则更为有用,但如果您只知道名不姓,电话簿将没有用处。

所以说创建复合索引时,应该仔细考虑列的顺序。对索引中的所有列执行搜索或仅对前几列执行搜索时,复合索引非常有用;仅对后面的任意列执行搜索时,复合索引则没有用处。

如:建立 姓名、年龄、性别的复合索引。

create table test(

a int,

b int,

c int,

KEY a(a,b,c)

);

优: select * from test where a=10 and b>50

差: select * from test where a50

优: select * from test order by a

差: select * from test order by b

差: select * from test order by c

优: select * from test where a=10 order by a

优: select * from test where a=10 order by b

差: select * from test where a=10 order by c

优: select * from test where a>10 order by a

差: select * from test where a>10 order by b

差: select * from test where a>10 order by c

优: select * from test where a=10 and b=10 order by a

优: select * from test where a=10 and b=10 order by b

优: select * from test where a=10 and b=10 order by c

优: select * from test where a=10 and b=10 order by a

优: select * from test where a=10 and b>10 order by b

差: select * from test where a=10 and b>10 order by c

索引原则

1.索引越少越好

原因:主要在修改数据时,第个索引都要进行更新,降低写速度。

2.最窄的字段放在键的左边

3.避免file sort排序,临时表和表扫描。

mysql 复合索引_mysql联合索引(复合索引)详解相关推荐

  1. MySQL获取连接_MySQL 连接查询超全详解

    1 作用 在MySQL中join操作被称为连接,作用是能连接多个表的数据(通过连接条件),从多个表中获取数据合并在一起作为结果集返回给客户端.例如: 表A: id name age 1 A 18 2 ...

  2. mysql select 缓存_mysql select缓存机制使用详解

    mysql Query Cache 默认为打开.从某种程度可以提高查询的效果,但是未必是最优的解决方案,如果有的大量的修改和查询时,由于修改造成的cache失效,会给服务器造成很大的开销,可以通过qu ...

  3. mysql执行计划_mysql的sql执行计划详解

    点击蓝字"程序员考拉"欢迎关注! 引言: 实际项目开发中,由于我们不知道实际查询的时候数据库里发生了什么事情,数据库软件是怎样扫描表.怎样使用索引的,因此,我们能感知到的就只有sq ...

  4. mysql in边界_mysql中 where in 用法详解

    这里分两种情况来介绍 WHERE column IN (value1,value2,...) WHERE column NOT IN (value1,value2,...) 1.in 后面是记录集,如 ...

  5. mysql配置文件教程_Mysql配置文件:my.ini详解 - MySQL 教程精选

    (1).back_log: 要求 MySQL 能有的连接数量.当主要MySQL线程在一个很短时间内得到非常多的连接请求,这就起作用,然后主线程花些时间(尽管很短)检查连接并且启动一个新线程. back ...

  6. mysql update用法_mysql update语句的用法详解

    首先,单表的UPDATE语句: UPDATE [LOW_PRIORITY] [IGNORE] tbl_name SET col_name1=expr1 [, col_name2=expr2 ...] ...

  7. 电脑上怎么配置mysql数据库服务器_Mysql数据库服务器安装与配置详解教程

    一.Mysql的安装 首先,看看自己电脑里是否安装了Mysql软件rpm -qa | grep mysql 如果没有安装,则放入光盘:rpm -ivh mysql-server-*.rpm(如果不能直 ...

  8. c mysql 设置字符集_MYSQL字符集设置的方法详解(终端的字符集)

    前言 每次利用终端 创建数据库或者创建表的时候,字符集都是latin1,或者进行插入值的时候,显示的是乱码(不指定字符集的时候)如下: 查看当前数据库的字符集 character_set_client ...

  9. MySQL函数笔记_MySQL笔记之数学函数详解

    绝对值函数ABS(x)和圆周率函数PI() 复制代码 代码如下: mysql> SELECT ABS(0.5), ABS(-0.5), PI(); +----------+----------- ...

  10. mysql timestamp格式化_mysql TIMESTAMP(时间戳)详解

    TIMESTAMP的变体 1,TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录和修改现有记录的时候都对这个数 ...

最新文章

  1. LJL-Solution-vss2005在项目中连接不上 解决方案
  2. 电脑不能打字_意外收到一台ThinkPad T400笔记本电脑,简单升级后,办公没问题...
  3. xxxx must either be declared abstract or implement abstract method ‘map(T)‘ in ‘MapFunction‘
  4. redis连不上java,java使用jedis连不上linux上redis服务
  5. 一个机器周期 计算机_计算机科学组织| 机器周期
  6. 可编程led灯带原理_SCPSD-250-04-27派克真空压力传感器故障和工作原理
  7. 二、nodemon-Node.js 监控工具
  8. Java番外篇3——线程池
  9. 字节跳动大规模实践埋点自动化测试框架设计
  10. Linq 三表 left join 的实现
  11. “会用LabVIEW,但是却没有听说TestStand,好像有点说不过去吧!”(下)
  12. 编译原理(陈火旺)-中国大学慕课05 语法分析——自下而上分析5 第2次单元测试
  13. Kafka的数据结构与算法
  14. 爱思服务器shsh文件类型,爱思服务器查询shsh失败
  15. 文献调研——存算一体的一些基础知识
  16. STRATEGY模式(冒泡算法为例)
  17. 存储基础知识——SAN
  18. AS608指纹模块开发教程
  19. 获取apk签名及apk签名方法
  20. Linux Shell脚本语句执行失败,后续语句继续执行的问题

热门文章

  1. 旺店通·企业奇门和用友BIP单据接口对接
  2. 潜流式人工湿地计算_人工湿地计算书
  3. 英伟达突破万亿美元市值,创始人黄仁勋分享创业心得
  4. 基于物联网、云计算建设的智慧校园云平台源码
  5. 学习 PostCSS 以及使用
  6. FreeRTOS应用——任务
  7. 使用ES的数据搜索功能
  8. AES 配合mybaties 实现指定字段自动加解密
  9. Android自定义view摇杆,Android自定义View实现游戏摇杆键盘的方法示例
  10. ntp服务器不稳定,什么是ntp服务器?搭建NTP服务器出现的一些问题