• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySql如何使用not in实现优化

    最近项目上用select查询时使用到了not in来排除用不到的主键id一开始使用的sql如下:

    select 
      s.SORT_ID,
      s.SORT_NAME,
      s.SORT_STATUS,
      s.SORT_LOGO_URL,
      s.SORT_LOGO_URL_LIGHT
    from SYS_SORT_PROMOTE s
      WHERE
        s.SORT_NAME = '必听经典'
        AND s.SORT_ID NOT IN ("SORTID001")
      limit 1;

    表中的数据较多时这个sql的执行时间较长、执行效率低,在网上找资料说可以用 left join进行优化,优化后的sql如下:

    select 
      s.SORT_ID,
      s.SORT_NAME,
      s.SORT_STATUS,
      s.SORT_LOGO_URL,
      s.SORT_LOGO_URL_LIGHT
    from SYS_SORT_PROMOTE s
    left join (select SORT_ID from SYS_SORT_PROMOTE where SORT_ID=#{sortId}) b
    on s.SORT_ID = b.SORT_ID
      WHERE
        b.SORT_ID IS NULL
        AND s.SORT_NAME = '必听经典'
      limit 1;

    上述SORT_ID=#{sortId} 中的sortId传入SORT_ID这个字段需要排除的Id值,左外连接时以需要筛选的字段(SORT_ID)作为连接条件,最后在where条件中加上b.SORT_ID IS NULL来将表中的相关数据筛选掉就可以了。

    这里写下随笔,记录下优化过程。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

    您可能感兴趣的文章:
    • MYSQL IN 与 EXISTS 的优化示例介绍
    • MySQL中对于not in和minus使用的优化
    • MySQL中or、in、union与索引优化详析
    • MySQL之select in 子查询优化的实现
    • 一次Mysql使用IN大数据量的优化记录
    上一篇:MySQL如何使用union all获得并集排序
    下一篇:SQL注入漏洞过程实例及解决方案
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySql如何使用not in实现优化 MySql,如何,使用,not,实现,