社区
MS-SQL Server
帖子详情
关于 Select * from table where column not in(...)
AlexHwang
2004-01-09 10:49:45
如果not in (...)有很多,比方说2000条
这个语句效率如何?还有其他更合理的写法吗?
着几千个数据是没有规律的,每次都不一样。
...全文
122
16
打赏
收藏
关于 Select * from table where column not in(...)
如果not in (...)有很多,比方说2000条 这个语句效率如何?还有其他更合理的写法吗? 着几千个数据是没有规律的,每次都不一样。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AlexHwang
2004-01-11
打赏
举报
回复
还有,金蝶数据库和业务数据库分布在两台机器上
AlexHwang
2004-01-11
打赏
举报
回复
w_rose:
你有点自以为是啊,事实上是必须每次这样去验证。
你回答的不是我想要的。
这个不是我们公司的程序的问题,做的是金蝶财务软件的接口,很多东西要考虑到客户正在使
用的金蝶软件,如果两方面都是我做的,我还需要考虑这些东西吗?
w_rose
2004-01-11
打赏
举报
回复
我还是多一句:
....where not exists(select * from ....
没错,解决你的问题。rowset可以临时访问其他数据库。
w_rose
2004-01-11
打赏
举报
回复
其实已经回答问题了(效率如何?更好的?),却看不出来。我也就没有办法了!
w_rose
2004-01-11
打赏
举报
回复
我倒。这年头,越是好的程序员越找不到工作。
w_rose
2004-01-11
打赏
举报
回复
所以in里面的数字是程序从数据库A中取回来的,生成SQL后到数据库B里查找是否有该记录。而A中的数据生成的时候并不会去考虑B中是否存在,所以A中的数据对数据库B来说是没有规律不可重用的。
---------------------------------------------------------------------------------
你们的程序也太差劲啦。用得着一遍一遍去浪费网络和服务器资源么?
w_rose
2004-01-10
打赏
举报
回复
并不是考虑到效率的问题,只是觉得没有必要对没有很独特意义的东西费精力,我从来没用过in这种语法。
AlexHwang
2004-01-10
打赏
举报
回复
w_rose:
in里面的不是存在表里的阿,而且也不可能存到表里,都是没有规律的数字。
所以你说的我用不上。
实际是这样的,我要在两个数据库之间验证一致性,所以in里面的数字是程序从数据库A中取回来的,生成SQL后到数据库B里查找是否有该记录。而A中的数据生成的时候并不会去考虑B中是否存在,所以A中的数据对数据库B来说是没有规律不可重用的。
w_rose
2004-01-10
打赏
举报
回复
很偶然的时候,会写 where field in ('a','b') 这样的写法,但是in后边不会跟个子查询。
w_rose
2004-01-10
打赏
举报
回复
select ... from a where column_a not in (select column_b from b ...)
可以写成:
select ... from a where not exists(select * from b where column_b=a.column_a)
效率当然大大增加。当b表记录比较多时,建在column_b 上的索引更可以提高查询速度(如果b表有100万条记录,可以预期查询效率可以提高1千倍以上)。
AlexHwang
2004-01-09
打赏
举报
回复
这个语句是程序生成的,而且这个语句的使用频率很高,所以会很在意效率问题。
我就是想问问有没有更好的语句能实现相同的目的?
AlexHwang
2004-01-09
打赏
举报
回复
to 烛光:
这些值是不可重用的阿,难道我每次查找前先把他们插进去?
那样会不会更慢呢?
zhaoloudy
2004-01-09
打赏
举报
回复
2000条效率应该不会差很多吧。不过你有那么长的in (....)吗?还是转为子查询吧。
gmlxf
2004-01-09
打赏
举报
回复
如果过长,你可以将in (...)里面的1,2,3,4或者'a','b','c'..等插入一个临时表中
然后
select *
from t
where column not in
(select column from #tmp)
youngby
2004-01-09
打赏
举报
回复
有点问题了。
会比较慢!~
youngby
2004-01-09
打赏
举报
回复
Select COL1,COL2,COL3,COL4,... from table where column not in(...)
基于Web的酒店客房管理系统的设计与实现+论文+开题
Map map = db.queryForMap("
select
* from t_user where id=?",new Object[]{user.get("id")});model.addAttribute("map", map); return "/user/mine"; } @RequestMapping(value = "/mineSave") public Response...
MySQL 查询
select
* from
table
where id in 如何提高效率?
* from a where id in (
select
id from b ); 对于这条sql语句它的执行计划其实并不是先查询出b表的所有id,然后再与a表的id进行比较。 mysql会把in子查询转换成exists相关子查询,所以它实际等同于这条sql语句:...
select
* from
table
where for update 学习
语法
SELECT
... FOR UPDATE [OF
column
_list][WAIT n|NOWAIT][SKIP LOCKED]; of 选定要锁的某列 wait n 等待时间 nowait 不等待 skip locked 跳过锁,也就是不会报资源忙的异常 环境 CREAT...
【SQL Server】sql中去除重复的数据
select
distinct * from
table
总的思路就是先找出表中重复数据中的一条数据,插入临时表中,删除所有的重复数据,然后再将临时表中的数据插入表中。所以重点是如何找出重复数据中的一条数据,有三种情况 ...
select
* from
table
where id in(...
create
table
1
select
* from
table
2 与 insert into
table
1
select
* from
table
2的区别与用法
复制表结构及其数据:create
table
tale1.....
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章