mysql not in如何优化
,你现在写的这个sql是查询到你描述的结果的
c表(xl_account),没看明白是么的的,先不管
a,b 两表通过id进行关联,应该是可以认为id相同则是同一(人)条记录
name不同应可以认为是做了修改,你用not in 则说明是不存在。假如,有2行记录,将名称互换,应该是两行都修改了,但是按照你现在的sql来看是应属于in的范围,not in 无法显示的,也就是查不出来。
所以,首先not in 改为 不等(!=), 才应该是你要找的数据。这样效率也是有所提高的。
若想要找到哪条记录修改,且要查询改前和改后的值,那么没有什么修改空间了,如果要查出哪条修改过,则有select*fromkd_usera
wherenotexists(
select1fromlx_userbwherea.id=b.idanda.name=b.name
)
sql语句求优化,听说NOT IN 语句不好求优化
可以考虑notexists或minus(except)--notexists
SELECTnameFROMtest1a
WHERENOTEXISTS(SELECT1FROMtest2bWHEREa.NAME=b.NAMEandb.NAME<>'admin')
--minus
SELECTnameFROMtest1a
minus
SELECTDISTINCTNAMEFROMtest2WHERENAME<>'admin'
效率方面,一般来not exists和minus要比not in强很多,但是具体情况具析。
可以参考:
通过一个例子,对比几种方法的效率
sql中的not in怎么优化
非到迫不得已不要用,因为not in 不走索引
相关标签推荐:
延展阅读: