mysql如何优化in_MySql如何使用not in实现优化

左手的ㄟ右手 2022-10-25 04:55 259阅读 0赞

最近项目上用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来将表中的相关数据筛选掉就可以了。

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

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

发表评论

表情:
评论列表 (有 0 条评论,259人围观)

还没有评论,来说两句吧...

相关阅读

    相关 如何优化MySQL数据库

    通过8个方法优化Mysql数据库:创建索引、复合索引、索引不会包含有NULL值的列、使用短索引、排序的索引问题、like语句操作、不要在列上进行运算、不使用NOT IN和<>操

    相关 MySQL数据库结构如何优化

    数据库结构优化 数据库结构优化的目的:     减少数据冗余     尽量避免数据维护中出现更新,插入和删除异常     插入异常:如果表中的某个实体随着另一个实...