美文网首页
MySQL索引简介

MySQL索引简介

作者: 小良叔 | 来源:发表于2016-07-14 22:52 被阅读73次

索引

即特定的MySQL字段进行一些特定的算法排序,帮助MySQL高效获取数据的数据结构

MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等
HASH
通过建立特征值,然后根据特征值来快速查找
速度更快,但只能用于 =、<=>、IN操作符;优化器不能用于order by;任何查找操作必须是索引的完整列
BTree
列记录都是按照顺序排列的,可以优化用于比较或者范围查找操作(=, >, >=, <, <=, between, in),以及用于group by, order by,而且对于字符串类型的索引,最左前缀字符串也可以充分利用索引,如like ‘admin%’会解释成 ‘admin’ <= key_col < ‘admil’

索引类型

index 普通索引

  1. MySQL的基本索引,无限制
  2. 对于字符串类型,可以指定索引前缀长度

unique 唯一索引
唯一值,可以为NULL

** primary key 主键索引**
特殊的唯一索引,不允许有空值 - 一表只能有一个主键

fulltext index 全文索引「作用不大」
全文索引,针对值中的某个单词,比如一篇文章中的某个词

索引操作

索引创建

# 表创建完之后创建
alter table table_name add index index_name(column, [column1,...])
alter table table_name add unique index_name(column)

# 表创建完之后创建
create table table_name (
    ......
    primary key (id),
    unique key index_name (column),
    key index_name (column)
);

索引删除

1) drop index index_name on table_name
2) alter table table_name drop index index_name

索引查看

show index from table_name \G;

索引技巧

1 对 where, on, group by, order by 中出现的列使用索引
2 对较小数据列使用索引,可使索引文件更小,同时内存中也可以装载更多的索引键
3 较长字符串使用前缀索引
4 不建立过多索引, 除了增加额外的磁盘空间外,对于DML操作的速度影响很大,因为其每增删改一次就得更新索引
5 使用组合索引,注意顺序
6 维度高的列创建索引
数据列中不重复值出现的个数越大, 维度就越高;要为维度高的列创建索引,如性别和年龄,那年龄的维度高于性别,性别不适合创建索引,其维度过低

不走索引的SQL

# 以下SQL不走索引
select * from users where name like '%tom'; # like 'tom%' 走索引
select * from users where age + 1 = 25;  # 索引列参与运算
select * from users where left(`create_time`,4) < 1990; # 使用函数,同上
select * from users where aa = 1; # 如果aa定义为字符串,则不走索引
# 当name age email都建立了索引,才走索引「查询中避免使用or」
select * from users where name='xx' or age = 22 or email='email@gmail.com';

索引弊端

虽然索引提高了查询速度,当时却增加额外的磁盘空间,但是会降低DML操作的速度,因为其每增删改一次就得更新索引

PS: 一般情况下, 查询操作远大与DML操作
在大数据导入时,可以先删除索引,再批量插入数据,最后再添加索引

相关文章

  • MySQL的索引原理与查询优化

    一、MySQL 索引简介 1、 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL...

  • 关于MySQL索引的几件小事

    零.索引简介 1. 索引是什么 ①MySQL官方对索引的定义是:索引(Index)是帮助MySQL高效获取数据的数...

  • JavaEE进阶知识学习-----Mysql数据库--索引基础知

    3.索引简介 索引是什么 官方定义:索引(mysql)是帮助MySql高效获取数据的数据结构,可以说索引的本质:索...

  • 重新学习Mysql数据库4:Mysql索引实现原理

    MySQL索引类型 一、简介 MySQL目前主要有以下几种索引类型:1.普通索引2.唯一索引3.主键索引4.组合索...

  • mysql索引简介

    索引是什么 mysql官方定义: 索引(index)是帮助mysql高效获取数据的数据结构。 所以索引的本质:索引...

  • MySQL索引简介

    索引是什么? MySQL官方对索引的定义为:索引是帮助MySQL高效获取数据的数据结构;索引是提高查询速度的最重要...

  • MySQL索引简介

    索引 即特定的MySQL字段进行一些特定的算法排序,帮助MySQL高效获取数据的数据结构 MySQL数据库支持多种...

  • MySQL索引简介

    索引的分类 1. 普通索引和唯一索引 普通索引是mysql 中的基本索引类型,允许在自定义索引的列中插入重复值和空...

  • 【Mysql】索引的类型最完整介绍

    一、简介 Mysql主要的几种索引类型: 普通索引 唯一索引 主键索引 综合索引 全文索引 语句 1、unique...

  • Mysql索引

    简介 MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。 好处 打个比...

网友评论

      本文标题:MySQL索引简介

      本文链接:https://www.haomeiwen.com/subject/zbzejttx.html