zoukankan      html  css  js  c++  java
  • 索引

    索引与视图

    1.什么是索引?
    数据库方面,查询一张表的时候有两种检索方式:

    • 一:全表扫描
    • 二:根据索引检索(效率很高)。因为它缩小了扫描范围

    索引虽然可提高检索效率,但不能随意添加,因为索引也是数据库中的对象,需要数据库维护。数据一旦修改,索引需要重新排序,进行维护

    2.怎么创建索引对象?

    create index 索引名 on 表名(字段名)
    eg:create index emp_sal_index on emp(sal);
    删除索引对象:drop index 索引名称 on 表名;

    3.什么时候给字段添加索引?

    • 数据量庞大
    • 该字段很少DML操作
    • 该字段经常出现在where子句中

    注意:主键和具有unique约束的字段会自动添加索引。所以根据主键检索效率高。

    4.查看sql语句的执行计划:
    explain select ename,sal from emp where sal=5000;
    type:all 表示全表扫描
    +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
    | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
    +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
    | 1 | SIMPLE | emp | NULL | ALL | NULL | NULL | NULL | NULL | 14 | 10.00 | Using where |
    +----+-------------+-------+------------+------+---------------+------+---------+------+------+------

    加上索引后,查询结果为:
    +----+-------------+-------+------------+------+---------------+---------------+---------+-------+------+----------+-------+
    | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
    +----+-------------+-------+------------+------+---------------+---------------+---------+-------+------+----------+-------+
    | 1 | SIMPLE | emp | NULL | ref | emp_sal_index | emp_sal_index | 9 | const | 1 | 100.00 | NULL |
    +----+-------------+-------+------------+------+---------------+---------------+---------+-------+---

    4.索引实现原理
    底层采用数据结构:B+Tree.
    缩小了扫描范围,底层索引进行了排序,分区,索引会携带物理地址。最终通过索引检索到数据之后,获取到关联的物理地址,通过物理地址定位表的数据。

    5.索引分类
    单一索引:给单个字段添加索引
    复合索引:给多个字段联合起来添加索引
    主键索引:主键上会自动添加索引
    唯一索引:有unique约束的字段上会自动添加索引

    6.索引什么时候失效?
    模糊查询,第一个字母采用百分号
    select ename from emp where ename like '%A'

  • 相关阅读:
    kbmMW RunInTransaction
    有感Delphi 2021路线图
    kbmMW 5.13.00 Scheduler不执行SynchronizedAfterRun
    Delphi 10.4.1的编译器bug终于修正了!
    OUI作者开源作品
    kali安装pwntools遇到的一些问题
    电子公文传输系统团队项目
    AI 学习框架
    Linux top命令的用法详细详解
    c# DateTime时间格式和JAVA时间戳格式相互转换
  • 原文地址:https://www.cnblogs.com/tingshu/p/14852046.html
Copyright © 2011-2022 走看看