美文网首页
sql 优化的一部分细则1

sql 优化的一部分细则1

作者: Helen_Cat | 来源:发表于2018-12-30 11:54 被阅读11次

    做一个项目统计的内容,其中 涉及到跨库跨表及表连接 及子查询嵌套,还真的是不是很简单,也意识到了sql 优化对查询性能的对比。
    跨库其实有两种思路
    1.连接两个数据库【数据源】把查询的数据加载到程序中,比如使用springboot,然后在程序中做一些连接聚合的操作
    2.将被连接的另一个库的表的数据dump 来,然后在主库中新建一个临时表,并把刚才dump 的数据插入进去,然后在同库里实现多表连接join 查询,需要注意的是临时表只在当前连接session中可见,connection 断掉 这个临时表就会被删除,所以在一个单独连接中药执行多条sql

    然后是表连接,一定要注意的是 left join 还是inner join ,只要匹配的数据就用inner join

    另外是子查询,在做子查询的时候一定要应用上现有的索引字段,不然查询性能会非常差,尽量在应用后单表所有索引字段过滤后再join其他表,不然表连接后生成一个新表,所有的索引就失效了对于新表
    表连接 会导致 mysql 的磁盘io 猛增,影响到查询效率

    如果可以使用 in 尽量使用in 来代替表连接【如果只要一个字段】
    sql 在group by 的时候 要对剩下的字段做聚合 sum avg count 等等要利用上

    同样的内容,不同的sql 拼写,效率千差万别,对两千万对2百万的联合查询,使用inner join 一个小时没有出结果,使用两步 然后in 的形式5分钟出结果

    相关文章

      网友评论

          本文标题:sql 优化的一部分细则1

          本文链接:https://www.haomeiwen.com/subject/dmcvlqtx.html