zoukankan      html  css  js  c++  java
  • 使用SQL命令的in&not in等删除数据的总结

    总结:
    1、查询时用 not in 效率极其低下,因此结合left join改为in查询,效率很快

    原语句:

     select * from my_test_table where id not in (select b.id as id from ( SELECT MAX(a.`ModifyAt`)ModifyAt,a.userid FROM my_test_table a   GROUP BY a.UserId,a.SeriesId,a.CourseId) c
     INNER JOIN `my_test_table` b ON c.userid=b.userid AND c.ModifyAt=b.ModifyAt)

    优化后:

    select * from (select u.id as id from my_test_table u left join  (select b.id as id from ( SELECT MAX(a.`ModifyAt`)ModifyAt,a.userid FROM my_test_table a   GROUP BY a.UserId,a.SeriesId,a.CourseId) c
     INNER JOIN `my_test_table` b ON c.userid=b.userid AND c.ModifyAt=b.ModifyAt) d  on d.id = u.id where d.Id is null) as e

    2、查询出后,需要用 delete where in 来删除,但是delete where in 语句效率极其低下。

    原语句:

    delete from my_test_table where id in (select * from (select u.id as id from my_test_table u left join  (select b.id as id from ( SELECT MAX(a.`ModifyAt`)ModifyAt,a.userid FROM my_test_table a   GROUP BY a.UserId,a.SeriesId,a.CourseId) c
     INNER JOIN `my_test_table` b ON c.userid=b.userid AND c.ModifyAt=b.ModifyAt) d  on d.id = u.id where d.Id is null) as e)

    因此改为where语句,关联表删除数据 优化后:

    delete deluser from my_test_table deluser,(select * from (select u.id as id from my_test_table u left join  (select b.id as id from ( SELECT MAX(a.`ModifyAt`)ModifyAt,a.userid FROM my_test_table a   GROUP BY a.UserId,a.SeriesId,a.CourseId) c
     INNER JOIN `my_test_table` b ON c.userid=b.userid AND c.ModifyAt=b.ModifyAt) d  on d.id = u.id where d.Id is null) as e) f where deluser.id = f.id;

    0.36秒执行完成。

    参考文章:

    https://blog.csdn.net/hello_l/article/details/71419464

    https://blog.csdn.net/pcwblover008/article/details/80015855

  • 相关阅读:
    .NET内存管理、垃圾回收
    C#容器类,性能介绍
    与LINQ有关的语言特性
    IMEI
    IMSI
    无源码调试smali
    IDA远程调试 在内存中dump Dex文件
    error C4996: 'scanf': This function or variable may be unsafe.
    vue 用axios实现调用接口下载excel
    读《JavaScript权威指南》笔记(三)--对象
  • 原文地址:https://www.cnblogs.com/dayang12525/p/12751123.html
Copyright © 2011-2022 走看看