单表查询怎么写exist

dongbala123 2017-02-17 02:28:53
单表有两千多万数据,要筛选出某个字段不等于几个值,用的 != or 或者not in 不能使用索引,怎么用exist筛选条件啊。就是单表查询
...全文
644 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jdsnhan 2017-02-20
  • 打赏
  • 举报
回复
引用 2 楼 sxq129601 的回复:
你单表查询用啥exists呀,exists一般用来关联表的,不等于这种有时不走索引是对的呀,例如100W数据,你排除100条数据,那不还是要全表扫描,你过滤的数据量太少了。
+1 是否走索引,和你过滤的数据量有直接关系
sxq129601 2017-02-17
  • 打赏
  • 举报
回复
你单表查询用啥exists呀,exists一般用来关联表的,不等于这种有时不走索引是对的呀,例如100W数据,你排除100条数据,那不还是要全表扫描,你过滤的数据量太少了。
POM_24 2017-02-17
  • 打赏
  • 举报
回复
举个例子: A 表中不存在ID 为ID=1 ,ID=235,ID=89的情况,这样写;
SELECT *
  FROM A A1
 WHERE NOT EXISTS (SELECT 1
          FROM A A2
         WHERE A1.ID = A2.ID
           AND A2.ID IN (1,255,89));
假如筛除的种类过多,IN 效率也不会高,有规律的数字可以考虑使用正则表达式或者中间表;

3,499

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧