首页 > 数据库 >老杜MySQL/days.05(索引、视图、三范式)

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

时间:2022-09-25 20:45:17浏览次数:63  
标签:数据库 sql 导出 视图 索引 MySQL where 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文件路径;

标签:数据库,sql,导出,视图,索引,MySQL,where,days.05
From: https://www.cnblogs.com/LinxhzZ/p/16728490.html

相关文章

  • MySQL 主从同步延迟监控
    MySQL5.7和8.0支持通过replication_applier_status表获同步延迟时间,当从库出现延迟后,该表中的字段REMAINING_DELAY记录延迟秒数,当没有延迟时,该字段值为NULL,官方对该字......
  • MySQL数据库的创建、修改、删除及基本操作
    1.MySQL数据库的创建,语法格式如下:CREATEDATABASE[IFNOTEXISTS]<数据库名>[[DEFAULT]CHARACTERSET<字符集名>][[DEFAULT]COLLATE<校对规则名>];[]中的内......
  • MySQL数据库-数据表
      数据表的基本操作.MySQL数据库支持多种数据类型,大致可以分为3类:数值类型、日期和时间类型、字符串(字符)类型。(1)数值类型数值类型用于存储数字型数据,这些类型包......
  • MySQL半同步复制的实现和复制过滤器
    异步:当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。同步:当客户端发送请求给服务端,在等待服务端响应的请求时,客户......
  • 老杜MySQL/days.05(事务)
    1.事务(一个完整的业务逻辑,最小的工作单元)a.事务中的语句要么全部成功,要么全部失败;b.只有DML语句才有事务的说法,即insert、delete、update;c.事务怎么做......
  • vue中检测不到数组或者对象发生改变,如何解决? vue更新数组时触发视图更新的方法
    vue中检测不到数组或者对象发生改变,如何解决? this.$set(对象/数组,键,值)Vue.set(对象/数组,键,值)给对象增加新属性、给数组增加属性都可以响应!this.$delete(对......
  • mysql分组后选出最大值所在的那一行数据
    背景mysql中使用groupby进行分组后取某一列的最大值,我们可以直接使用MAX()函数来实现,但是如果我们要取最大值所在的那一行或多行(可能有多行对应的最大值都一样)那么我们需......
  • MySQL数据库安装保姆级教程及1045错误和2058问题解决
    使用Mysql的zip压缩包解压版,下载之后需进行一定的配置,才能使用它。下面对Mysql压缩包版的安装方法进行详细的描述,如有疑问或错误,望及时反馈。首先,mysql的官方下载地址......
  • 【博学谷学习记录】超强总结,用心分享|Java基础分享-MySQL 有哪些锁
    目录1.全局锁2.表级锁2.1表锁2.2元数据锁2.3意向锁2.4AUTO-INC锁3.行级锁 1.全局锁全局锁是怎么用的?要使用全局锁,则要执行这条命:flushtableswithread......
  • 老杜MySQL/days.04(约束)
    1.快速创建表(不常用):create table 表名 as select * from 表名;或 create table 表名 as select 字段1,字段2,...from 表名 where 筛选条件;......