mysql的联合索引_mysql联合索引详解
联合索引又叫复合索引。对于复合索引: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排序,临时表和表扫描。
4.MySQL能在多个列上创建索引。一个索引可以由最多15个列组成。(在CHAR和VARCHAR列上,你也可以使用列的前缀作为一个索引的部分)。
注意:
一:
对于CHAR和VARCHAR列,你可以索引列的前缀。这更快并且比索引整个列需要较少的磁盘空间。在CREATE TABLE语句中索引列前缀的语法看起来像这样:
KEY index_name (col_name(length))
下面的例子为name列的头10个字符创建一个索引:
mysql> CREATE TABLE test (
name CHAR(200) NOT NULL,
KEY index_name (name(10)));
对于BLOB和TEXT列,你必须索引列的前缀,你不能索引列的全部。
二:
聚集索引
一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。聚集索引确定表中数据的物理顺序。Mysql中myisam表是没有聚集索引的,innodb有(主键就是聚集索引),聚集索引在下面介绍innodb结构的时有详细介绍。
参考:
http://blog.csdn.net/turkeyzhou/article/details/8182636
mysql的联合索引_mysql联合索引详解相关推荐
- mysql explain 索引_MySql中Explain详解与索引最佳实践
使用EXPLAIN关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的.分析你的查询语句或是结构的性能瓶颈 下面是使用 explain 的例子: 在 select 语句之 ...
- mysql 用户管理表_Mysql—用户表详解(mysql.user)
MySQL 数据库 Mysql-用户表详解(mysql.user) MySQL是一个多用户管理的数据库,可以为不同用户分配不同的权限,分为root用户和普通用户,root用户为超级管理员,拥有所有权限 ...
- 如何查看mysql备份的情况_MySQL数据库备份详解(示例代码)
原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...
- mysql 长事务查询_MySQL长事务详解
前言: 『入门MySQL』系列文章已经完结,今后我的文章还是会以MySQL为主,主要记录下近期工作及学习遇到的场景或者自己的感悟想法,可能后续的文章不是那么连贯,但还是希望大家多多支持.言归正传,本篇 ...
- mysql myisam表分区_MySQL 表分区详解MyiSam引擎和InnoDb 区别(实测)
一.什么是表分区 通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了. 如:某用户表的记录超过了1000万条,那么就可以根据入库日期将表分区,也可以根据所在地将表 ...
- mysql实现悲观锁_mysql 悲观锁详解
悲观锁指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态.悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层 ...
- mysql as 后面字段_mysql 字段as详解及实例代码
mysql 字段使用as 在mysql中,select查询可以使用AS关键字为查询的字段起一个别名,该别名用作表达式的列名,并且别名可以在GROUP BY,ORDER BY或HAVING等语句中使用. ...
- mysql binlog sql统计_mysql的binlog详解
binlog是mysql记录操作的二进制日志文件,有三种格式可选,但是老旧的SBR已经不适合现在大多数业务需求,所以大多数都建议用MBR和RBR,即mixed或row,而解析他的原因,几乎都只有一个, ...
- mysql 分号子查询_MySQL子查询详解
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...
- mysql week函数参数_MySQL week()函数详解
一枚小产品的学习记录 在做sql练习题时了解到的新函数,做个简要的记录,因非技术人员(专业人士),可能会存在一定的局限性,若有不严谨的地方,请指正. 在日常的业务统计需求中,可能会有类似查询" ...
最新文章
- PHP的内存泄露问题与垃圾回收
- 20155317《网络对抗》Exp4 恶意代码分析
- 太努力工作的年轻人,都有病吧!?
- django框架预备知识
- mysql导入的excel更新_excel导入数据库,存在则更新不存在添加
- mysql limit 表的长度_mysql中的limit用法有哪些(推荐)
- python教学视频q_#python如何用pyqt5打开视频(还有PPT)并输出到QLabel上?#python怎么运行视屏教程...
- 计算机管理里面蓝牙音频有问题,win10更新到1903版,蓝牙音频存在问题,微软终于给出了解决方法-win10更新...
- oracle 密码管理,【转载】Oracle密码管理五大要点(一)
- 程序员如何内外兼修?
- dw添加下拉菜单_Dreamweaver怎么创建下拉菜单
- 2018年——不平凡的一年
- python对图片进行裁剪_python利用四个坐标点对图片进行裁剪
- 当读/写磁盘文件时,read/write是不带缓冲机制的吗?请说明原因。
- MachineLearning in Action (机器学习实战)源码和数据集下载地址
- 去北美读PHD前给你泼的“冷水”,有志于去北美深造的人读一读
- python+selenium+pycharm自动化测试环境搭建
- Spark中如何使用矩阵运算间接实现i2i
- 安装win7激活提示0x80072F8F
- vue中PDF文件转图片方法
热门文章
- SSRF漏洞之常见Bypass篇
- php 车牌号限号,不限行也不限号!还能送车牌?这种车你考虑吗?
- halcon双目搭建生成3d点云模型
- Dire Wolf(区间DP)
- 数学符号的意义总结(未完待续)
- 2023秋招360公司NLP算法岗面经
- [天池最新比赛] 云上进化”2022全球AI生物智药大赛” #¥150000
- 基于PHP+小程序(MINA框架)+Mysql数据库的小说小程序系统设计与实现
- 360 || 2021校园招聘的一道笔试题思路分享
- matlab抓取网页信息,如何利用Matlab抓取网页数据