sql 优化的一部分细则1

做一个项目统计的内容,其中 涉及到跨库跨表及表连接 及子查询嵌套,还真的是不是很简单,也意识到了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分钟出结果

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,132评论 2 89
  • 转 # https://www.cnblogs.com/easypass/archive/2010/12/ 08/...
    吕品㗊阅读 13,308评论 0 44
  • MySQL技术内幕:SQL编程 姜承尧 第1章 SQL编程 >> B是由MySQL创始人之一Monty分支的一个版...
    沉默剑士阅读 7,269评论 0 3
  • 一天的乒乓课,让儿子没有时间写剩下的作业,最后还是归到晚上突击啦!主要就是听写生字,和看图说话在熟悉一下,但...
    锴博麻麻阅读 689评论 0 0
  • 琵琶语,乐天谣。日日匆匆,水上风波平。乡曲音浊惟自珍。景入眼眶,尽是朴素色。 玲珑心,孤鸿影,影入平羌,镜前客愁新...
    燚阳阅读 2,350评论 0 4