zoukankan      html  css  js  c++  java
  • mysql索引

    什么是索引?

    当我们查阅书籍字典的时候,一般都会使用目录来快速定位。

    通过使用索引,可以更方便快捷的获取需要的数据库信息。

    分类

    在mysql中,索引主要有:普通索引,唯一索引,全文索引等。

    实例

    下面先从一个小demo中看一下普通索引的作用:

    1、新建表,表名为f1,并插入数据,见下图。

    这里写图片描述

    2、创建、查看和删除

    1)创建

    注意:其中表名为“f1”,为name列创建索引,名称为”in_name”。

    第一种:
    直接创建索引

    create index in_name on f1(name);

    修改表结构的方式(推荐使用)

    alter table f1 add index in_name(name);

    2)查看索引

    这里写图片描述

    删除索引

    alter table f1 drop index in_name;

    3、测试查询

    方法:通过使用explain/desc来分析sql的执行。
    具体语法格式:

    explain select * from f1 where id=1G
    
    或
    desc select * from f1 where id=1G

    先来试验一下,查询主键id

    这里写图片描述

    简单介绍下主要的含义:

    select_type:表示select类型,simple为单表。primary为主查询等
    type:表的连接类型。const只一行匹配,all全表扫描,index索引。
    possible_keys:查询可能使用的索引。
    key:实际使用索引
    rows:扫描行数

    效率

    通过name列查询来比较其差别。

    不使用索引

    这里写图片描述

    使用索引

    Extra行是“Using index”,表示使用索引,名称为in_name。
    这里写图片描述

    对比两个图,其中差别最大的是“rows”行。因为表f1本身有7条数据,不使用索引前,查询行数为7。但使用之后,rows减为2。查询行数直接影响执行效率。

    以上是普通索引的用法,简单提一下其他索引。
    唯一索引的特点是索引列的值必须唯一,但允许有空值。关键字为 UNIQUE
    举个例子:

    create unique index in_indexname on f1(name);

    缺点:

    图书的目录,如果被利用的好那会很方便,但如果滥用,不仅起不到原有的作用,还会带来巨大的负担,而且还需要维护目录。
    索引也是一样,它方便了查询,但降低了更新表的速度。因为mysql不仅要保存数据,还要保存索引文件。
    mysql索引只对一些操作符使用:<,<=,>,>=,between,in,like(不以%开头)。

  • 相关阅读:
    Linux学习-网络管理
    Linux学习-文件权限
    Linux学习-用户管理常用命令
    python操作数据库(MySQL、redis、MD5加密函数)
    Jenkins待过的坑
    Robot framework+Jenkins
    jenkins + maven + SVN自动化集成部署
    接口测试学习笔记二
    接口测试学习笔记一
    【数据结构】为什么要使用一致性哈希算法?
  • 原文地址:https://www.cnblogs.com/saixing/p/6730221.html
Copyright © 2011-2022 走看看