mysql建索引原则及索引区别

原创 2016年08月30日 15:54:21
索引原则
1、最左前缀匹配
    mysql 会一直向右匹配直到遇到范围查询(<,>,between,like)就停止匹配。
    如:a=1 and b=1 and c>3 and d=4 ,如果建立(a,b,c,d)顺序的索引,d是使用不到索引的,如果建立(a,b,d,c)的索引则都可以用到,a b d 可以任意调整顺序。
2、= 和 in 可以乱序。
    比如:a=1 and b =2 and c=3,   建立(a,b,c)索引可以任意顺序,mysql优化器会自动优化。
3、尽量选择区分高度的列作为索引。
    区分度的公式:count(distinct col)/count(*),表示字段不重复比例,比例越大扫描记录数越少,唯一键的区分度是1,而一些状态、性别字段可能在大数据面前区分度就是0 。
    一般需要join 的字段我们都要求是0.1 以上,即平均1条扫描10条记录
4、索引列不能参与计算

索引使用
1、索引的列是出现在where 子句后面或连接子句中指定的列
2、使用唯一索引,索引的列基数越大越好。(不同的值)
3、使用短索引。如果对字符串列进行索引,应该指定一个长度,只要有可能就应该这样做。例如有一个varchar(200)列,如果在前10或20个字符多数值是唯一的,就不要对整列进行索引。对前10或20个字符进行索引能节省大量的索引空间,使查询更快。较少的索引涉及的磁盘IO较少,较短的值的比较速度更快。主要是:对于较短的键值,索引高速缓存中的块能容纳更多的键值,因此,MySql也可以在内存中容纳更多的值。这样就增加了找到行而不用读取索引中较多块的可能性。
4、最左前缀。创建N列索引时,实际创建了MySql可以利用的N个索引。多列索引可起几个索引的作用,加为可利用索引中最左边的列集来匹配行。这样的列集称为最左前缀。
5、不要过度索引
6、对于InnoDB 存储引擎的表,记录默认会执照一定的顺序保存,如果有明确的定义主键,则按照主键顺序保存。若没有主键,有唯一索引,就按照唯一索引的顺序保存。如果没有主键也没有唯一索引,表中会自动生成一个内部列,按照这个列的顺序保存。按照主键或者内部列进行的访问是最快的。InnoDB 表的普通索引都会保存主键的键值,所以主键要尽量的选择较短的数据类型。

索引区别
BTREE 索引
    >,<,>=,<=,between,!= ,  <> ,  Like 'pattern'('pattern' 不以通配符开始),使用这些操作符时,都可以使用相关列上的索引
HASH 索引
    只用于= 或 <=> 操作符的等式比较
    优化器不能使用HASH 索引来加速ORDER BY 操作
    MySQL 不能确定在两个值之间大约有多少行。如果将一个MyISAM 表改为HASH 索引MEMORY 表,会影响一些查询的执行效率
    只能使用整个关键字来搜索一行

MySql 创建索引原则

为了使索引的使用效率更高,在创建索引时,必须考虑在哪些字段上创建索引和创建什么类型的索引。本小节将向读者介绍一些索引的设计原则。   1.选择唯一性索引   唯一性索引的值是唯一的,可以更快速的通过该...
  • CSDNones
  • CSDNones
  • 2015年12月27日 15:41
  • 2151

mysql建索引的几大原则

1.选择唯一性索引唯一性索引的值是唯一的,可以更快速的通过该索引来确定某条记录。例如,学生表中学号是具有唯一性的字段。为该字段建立唯一性索引可以很快的确定某个学生的信息。如果使用姓名的话,可能存在同名...
  • u013412790
  • u013412790
  • 2016年06月08日 12:38
  • 10897

MySQL系列—建索引的几大原则和使用索引优化查询

建索引的几大原则1、最左前缀匹配原则,非常重要的原则mysql会一直向右匹配直到遇到范围查询(>、 3 and d = 4,如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d...
  • u012758088
  • u012758088
  • 2017年08月13日 10:31
  • 392

SQL优化:建索引的原则

建立索引的基本规则: A、针对优先级高的、使用频繁的查询来增加索引,同时测试查询看索引是否被使用,并且不要同时增加多个索引。   B、除非有非常好的原因,否则在每一个表都增加一个聚集索引。   C、选...
  • yupeigu
  • yupeigu
  • 2017年03月07日 12:39
  • 711

数据库创建索引的一些原则

一,经常被用来过滤记录的字段。1. primary key 字段, 系统自动创建主键的索引;2. unique kye 字段,系统自动创建对应的索引;3. foreign key 约束所定义的作为外键...
  • tenfyguo
  • tenfyguo
  • 2009年03月09日 21:18
  • 10308

oracle数据库建立索引的原则

数据库建立索引的原则 1,确定针对该表的操作是大量的查询操作还是大量的增删改操作。 2,尝试建立索引来帮助特定的查询。检查自己的sql语句,为那些频繁在where子句中出现的字段建立索引。 3,尝...
  • zbyluxzing
  • zbyluxzing
  • 2016年08月08日 23:16
  • 2863

MySQL 有效的建立索引

0. 引言当数据库中的数据量达到亿级,数十亿级的时候,普通的一条查找语句都可能耗时非常长,解决此问题的一个有效方法是有效的建立索引。1.建立索引的准则 合理的建立索引能够加速数据读取效率,不合理的建立...
  • power0405hf
  • power0405hf
  • 2015年10月18日 22:31
  • 682

Mysql设计索引的原则

设计索引的原则 1. 搜索的索引列,不一定是所要选择的列。换句话说,最适合索引的列是出现在 WHERE 子 句中的列,或连接子句中指定的列,而不是出现在 SELECT 关键字后的选择列表中的 列 ...
  • henriezhang
  • henriezhang
  • 2014年01月08日 17:16
  • 4465

mysql索引的最左前缀原则

联合索引有一个最左前缀原则,所以建立联合索引的时候,这个联合索引的字段顺序非常重要 下面写了例子说明这个:CREATE TABLE `test_myisam` ( `id` int(11) NO...
  • topwqp
  • topwqp
  • 2016年07月30日 09:07
  • 2576

MySQL基本概念--索引&索引类型

索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。 在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytabl...
  • xifeijian
  • xifeijian
  • 2014年03月06日 23:38
  • 4296
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mysql建索引原则及索引区别
举报原因:
原因补充:

(最多只允许输入30个字)