免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 8659 | 回复: 2

关于sql效率问题一问 [复制链接]

论坛徽章:
71
15-16赛季CBA联赛之同曦
日期:2018-08-23 15:41:42辰龙
日期:2014-08-15 09:07:43狮子座
日期:2014-06-03 13:55:33亥猪
日期:2014-06-02 11:17:08巨蟹座
日期:2014-05-06 10:02:03午马
日期:2014-05-04 08:18:27亥猪
日期:2014-04-29 11:11:32技术图书徽章
日期:2014-04-24 15:51:26技术图书徽章
日期:2014-04-17 11:01:53辰龙
日期:2014-04-15 12:45:46亥猪
日期:2014-04-11 09:06:23射手座
日期:2014-04-01 15:28:10
发表于 2014-02-08 11:41 |显示全部楼层
在IQ中类似这样的sql效率如何,
select *  from xxxx where
A not
in(27019,27020,31112,27009,27021,31114,27023,27017,27022,31107,27018,59776,59777,59778,59779,27008,0,65534,65535)
and B in (27019,27020,27022,27023)

与A!=27019 or A!=27020.... and B=27019 or B=27020相比如何

论坛徽章:
0
发表于 2014-02-10 11:03 |显示全部楼层
你给的场景,没区别. optimizer 内部会自动转换成若干 or 的运算.
但是如果 in 的 list 太长的话, 比如超过255, 首先会在内存中生成一个表,将list 的内容插入, 然后按照join key 的方法来做.

论坛徽章:
7
数据库技术版块每日发帖之星
日期:2015-08-09 06:20:00数据库技术版块每日发帖之星
日期:2015-11-03 06:20:00数据库技术版块每日发帖之星
日期:2016-02-20 06:20:00数据库技术版块每日发帖之星
日期:2016-07-13 06:20:00数据库技术版块每日发帖之星
日期:2016-07-31 06:20:00数据库技术版块每日发帖之星
日期:2016-08-01 06:20:00数据库技术版块每日发帖之星
日期:2016-08-18 06:20:00
发表于 2014-02-15 13:15 |显示全部楼层
倒不如select * into #...
然后create index idx .... on A ...
再delete #... where A in ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP