老杜MySQL/days.05(索引、视图、三范式)

1. 索引

  a. 索引是在数据库表的字段上添加的,为了提高查询效率而存在的一种机制; 

  b. 相当于目录,可以缩小扫描范围而存在的一种机制;

  c. 一张表的一个字段可以添加为一个索引,多个字段也可以添加索引;

  d. 没有添加索引的字段,查找的方式是全扫描,一行一行;

  e. 只有排序之后的数据才有区间查找的说法(缩小扫描范围就是扫描某个区间)

  f. mysql当中的索引是一个 B-Tree 结构,遵循左小右大存放,采用中序遍历;

2. 索引的实现原理(存储的时候会按照索引顺序存储)

  T1. PK和unique会自动创建索引;

  T2. 任何一张表的任何一条记录都在硬盘上有一个物理存储编号;

  T3. mysql中索引是一个单独的对象,不同存储引擎以不同方式存储索引,但都是以 B-Tree 的形式存在(自平衡二叉树);

  T4. 添加索引的条件

    a. 数据量庞大;

    b. 字段经常出现在 where 后面,以条件的形式存在,总是被扫描;

    c. 字段很少有DML操作(insert、update、delete),因为DML之后,索引需要重新排序;

    建议通过 PK或者unique去查询,索引过多会影响性能;

3. 索引的操作

  创建索引:create  index  索引名  on  表名(字段名);

  删除索引:drop  index  索引名  on  表名;

  查看索引:百度;

4. 索引的失效

  a. 模糊匹配中以“%”开头;

  b. 使用or的时候,只有在or两边的字段条件都有索引,才会走索引;

  c. 使用复合索引的时候,没有使用左侧的列查找,索引失效;(inde复合(sal,job),where 必须跟 sal 才行);

  d. 在 where 当中索引列参加了运算,索引失效;

  e. 在 where 当中索引使用了函数;

5. 视图(只有DQL语句才可以创建)

  创建视图:create  view  视图名  as  DQL语句;

  删除视图:drop  view  视图名;

  可以面向视图对象进行增删改查,对视图对象的修改会导致原表被操作;

  视图的作用:

    可以把反复使用的复杂的sql语句以视图对象的形式新建,在使用时以视图对象的形式使用,简化开发;

    面向视图开发的时候,可以像使用table一样,对视图进行增删改查,视图对象操作的数据也是存储在硬盘上不会消失;

6. DBA常用命令

  数据库导出:dos窗口下执行

    导出数据库:mysqldump  数据库名>导出地址\文件名.sql 用户名(-uroot) 密码

    导出某张表:mysqldump  数据库名 表名>导出地址\文件名.sql 用户名(-uroot) 密码

  数据库导入:① 创建数据库 ② 使用数据库 ③ source sql文件路径;

posted @ 2022-09-25 20:34  LinxhzzZ  阅读(26)  评论(0)    收藏  举报