请教一条非常简单的sql语句性能问题。。 本帖最后由 a121984376 于 2012-12-10 10:18:37 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果 是连续的区间 ,可以用 between and declare @str varchar(100)='20,16,12'exec('Select * from Mapping Where OrganID in('+@str+')') 占个沙发再说。要不建个临时表,再inner join,这样效率会不会高点。等待高手。 4楼的方法与我直接拼接成sql 语句 有什么区别吗? 你应该问问自己,多个OrganID是怎么来的,如果是在sql里固定的,可以照你那样写,如果是从何变量中得来的,还能像你那样写? Select * from Mapping Where OrganID =20union allSelect * from Mapping Where OrganID =16union all.....这个也可以尝试下 看看速度 如果OrganID非常多的时候,我试过过千个,然后SQLServer连生成执行计划都不成功,也就是执行不了,我当时是把这些再做一步,生成一个表,然后关联,不仅不抱错了,也从20分钟降到20秒。在非常多的时候这个方法是可以的。 我想知道的是 4楼的方法 使用了exec 这个东西和我直接使用了 select * from Mapping where OrganID in (12,34) 这样的语句有什么区别? 沒有,他的是在sql上進行字符串拼接,你直接在程序上拼接語句也行. 多关键字查询问题sql PowerDesigner如何与SQL Server同步 关于排序问题 数据字段aa为varchar型,可存的是整形数据,现在要求对该字段进行大于小于查询,请教高手! 求救,sql server远程更新问题 SQL2005 表复制提示连接服务器***无效的数据。 再麻烦各位关于计算天数的问题:按出差月份计算员工的出差天数, 请进来看看 大力,邹健,小梁,有时间帮帮我。关于MS2005的参数配置问题 请会使用BULK Insert命令的高手进来看看! 一个关于结算的问题,求高手指点. 介于两个日期之间的SQL 哪个SQL执行效率高?
exec('Select * from Mapping Where OrganID in('+@str+')')
要不建个临时表,再inner join,这样效率会不会高点。等待高手。
4楼的方法与我直接拼接成sql 语句 有什么区别吗?
union all
Select * from Mapping Where OrganID =16
union all
.....这个也可以尝试下 看看速度
和我直接使用了 select * from Mapping where OrganID in (12,34) 这样的语句有什么区别?
沒有,他的是在sql上進行字符串拼接,你直接在程序上拼接語句也行.