SQL优化

1.SQL优化

  • 避免全盘扫描/全局搜索
    select * 避免使用
    尽量不要用!=,< >
    避免在where后使用函数
    not in、where like “%X%” (会引起全盘扫描)

  • 创建索引
    字段中值重复太多,添加索引没有太大必要,
    字段占用空间特别大,比如text类型

  • explain查看sql执行计划,是否引起了全盘扫描,是否用到了索引


2.索引

MySQL官方定义:索引(Index)是帮助MySQL高效获取数据的数据结构。

1.索引的类型

  • 聚簇索引和非聚簇索引:
    聚簇索引:查询速度快,不需要回表
    非聚簇索引:查询聚簇索引的位置,再通过聚簇索引查询到具体结果

  • 聚簇索引:主键索引(PRIMARY KEY)

    • 主键索引:唯一的标识,主键不可重复
  • 非聚簇索引:组合索引,普通索引,唯一索引

    • 组合索引在使用的时候,需要注意:
      多个字段,组合在一起创建出符合索引
      最左原则(例如,这里由id、name和age3个字段构成的索引,索引行中就按id/name/age的顺序存放,索引可以索引下面字段组合(id,name,age)、(id,name)或者(id)。如果要查询的字段不构成索引最左面的前缀,那么就不会是用索引,比如,age或者(name,age)组合就不会使用索引查询。)
    • 普通索引:默认的,Index,key关键字来设置,为了查询数据更快一 点。
    • 唯一索引:避免重复的列出现,唯一索引可以重复,
  • 全文索引:只有在MyISAM引擎上才能使用,只能在CHAR,VARCHAR,TEXT类型字段上使用全文索引,快速定位数据


2.索引的结构

B-Tree,B+Tree,Hash

  • 有一个字段添加了Hash索引,操作当前Hash索引的字段需要注意什么:
    针对Hash索引的字段不要order by
    数据量不是特别大时,Hash查询效率要远高于B-Tree,B+Tree
  • MySQL中使用的索引结构是:B+Tree
    B+Tree的叶子节点中,会有一个指针,指向了旁边的叶子节点

3.MySQL常见的数据引擎

InnoDB,MyISam

  • InnoDB:支持事务,支持行级锁,也支持表级锁(全盘扫描),查询效率相对较慢,将数据和索引存放在一个文件中
  • MyISam:不支持事务,只支持表级锁,查询效率相对较高,将数据和索引分开存放

4.三大范式

第一范式(1NF)
原子性:保证每一列不可再分
第二范式(2NF)
前提:满足第一范式
每张表只描述一件事情
第三范式(3NF)
前提:满足第一范式和第二范式
需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关


* 百度网盘倍速播放
videojs.getPlayers(“video-player”).html5player.tech_.setPlaybackRate(1.5)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值