• sql优化


    一. 插入数据

    主键顺序插入的效率大于乱序插入的效率 

    大批量插入数据

    如果一次性需要插入大批量数据,使用insert语句插入性能较低,此时可以使用Mysql数据库提供的load指令进行插入。(将特定文件里面的内容加载到数据库中去)

    二. 主键优化

     2.1 数据的组织方式

     2.2 页分裂

    页可以为空,也可以填充一半,也可以填充100%。每个页包含2-N行数据(如果一行数据多了,会行溢出),根据主键排列。

    主键顺序插入的话是一个一个的往后插,一页满了又换下一页。

     

    当插入50这个时,要插入的位置满了,此时就会先开辟一个新的数据页,然后找到第一个数据页50%的位置,然后将后面的数据移动到新开辟的数据页中。

     

     然后将50放到新的数据页后面。

    最后再对链表指针进行设置。

     2.3 页合并

    13,14,15,16都被标记为删除了。 

     

    2.4 主键的设计原则 

     

    三. Order by 优化 

     

    这里进行先对age、phone升序排序。没有索引效率不高

     

     

     

    Backward index scan :表示反向扫描索引。

    创建索引的时候如果没有指定顺序,默认指定是升序。所以这里会出现filesort

     所以为了解决这个问题可以创建一个索引

    3.1 order by注意事项

     四. group by 优化

    没有索引的时候

     创建了联合索引后,查询的...

     不在根据profession分组,而是根据age分组。将不满足最左前缀法则。

    划重点!!!覆盖索引:select的数据列只用从索引中就可以获得了,不必读取数据行。Using index:表明相应的select操作使用了覆盖索引,避免了访问表的数据行。 

    满足最左前缀法则。 

    五. limit 优化

    六. count 优化 

    count(*)不用取值,所以效率高。

    七. update优化 

     

    所以说后面的条件字段是必须要有索引的,否者就会从行锁升级为表锁。就会影响并发性能了。 

     

     

     

     

     

  • 相关阅读:
    VScode 右键没有转到定义等的菜单
    Scrum 实施过程的主要内容及5大常用工具
    WorkManager 一篇文章就够了
    雅思写作-杜仕明
    kubernetes集群搭建
    在算法研究过程中如何进行算法创新
    springboot大学生网络教学平台的设计与实现毕业设计源码281819
    【Linux】进程间通信3——system V共享内存
    【第八篇】商城系统-库存管理
    注意了!申请流量卡时地址一定不要填写学校,不好下卡哦!
  • 原文地址:https://blog.csdn.net/weixin_54401017/article/details/126785550