sql-SQL语句优化的小问在线急求

作者:用户 来源:互联网 浏览:266 次 时间:2016-05-27 17:10:51

sql

sql-SQL语句优化的小问在线急求 - 摘要: SQL语句优化的小问在线急求select*fromAwhereidin(123)怎么用exists替代数据库有优化机制,开发人员不需要对它优化#*#但是不是说in语句要慢于exists吗?如果我in里

问题描述

SQL语句优化的小问在线急求

select *
from A where id in (123)
怎么用exists 替代

解决方案

数据库有优化机制,开发人员不需要对它优化

解决方案二:

但是不是说in 语句要慢于exists吗?如果我in里面的内容非常多呢?怎么办

解决方案三:

这里有sql中existsnot exists的用法,你看看吧
html"" rel="nofollow">http://www.cnblogs.com/mytechblog/articles/2105785.html

解决方案四:

如果123这种直接传值的,用In就可以了

如果是in (select id from table)这种的
改成exist(select 1 from table where table.id=id)

解决方案五:

select * from A a where exists (select 1 from A b where a.id = b.id and b.id = 1 or b.id = 2 or b.id = 3 )

解决方案六:

如果象你这样的值为连续的, 应该改为:
select * from A where id between 1 and 3

如果你in中的值特别多而又不连续可以这样:
declare @t table(
id int
)
insert into @t (id) values( 1 )
insert into @t (id) values( 22 )
insert into @t (id) values( 3 )
……

select * from A where exists(
select 1 from @t B where a.id=b.id
)

如果你的id是从页面传过来的一连串的字符串“122345”之类的, 可以用字符串分割函数先转为表变量再操作。

不过一般情况下, 也就是说数据量比较小时, 不需要多作处理的, 象你说的8个值, 就没有必要大动干戈。

达到了50以上, 可以考虑。 或者你自己也可以去测试这个临界点的个数到底是多少

解决方案七:

如果象你这样的值为连续的, 应该改为:
select * from A where id between 1 and 3

如果你in中的值特别多而又不连续可以这样:
declare @t table(
id int
)
insert into @t (id) values( 1 )
insert into @t (id) values( 22 )
insert into @t (id) values( 3 )
……

select * from A where exists(
select 1 from @t B where a.id=b.id
)

如果你的id是从页面传过来的一连串的字符串“122345”之类的, 可以用字符串分割函数先转为表变量再操作。

不过一般情况下, 也就是说数据量比较小时, 不需要多作处理的, 象你说的8个值, 就没有必要大动干戈。

达到了50以上, 可以考虑。 或者你自己也可以去测试这个临界点的个数到底是多少

解决方案八:

这个应该没办法用exists 替代

解决方案九:

select *
from A where id in (123)
怎么用exists 替代

你可以把123放到一个表T的ID中,然后就可以写了
select * from A where exists (select 1 from T where id = A.id)
或者这样也行

select * from A where exists (select 1 from (select 'A' ID from dual union all select 'B' from dual union all select 'C' from dual) T
where id = A.id)

【云栖快讯】诚邀你用自己的技术能力来用心回答每一个问题,通过回答传承技术知识、经验、心得,问答专家期待你加入!  详情请点击
云栖社区(yq.aliyun.com)为您免费提供sql-SQL语句优化的小问在线急求相关信息,包括 sql 的信息 ,所有sql-SQL语句优化的小问在线急求相关内容均不代表云栖社区的意见! 该页面h5页面的地址是:https://m.aliyun.com/yunqi/wenzhang/show_97676,您可以点击sql-SQL语句优化的小问在线急求-手机站访问。
弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率

40+云计算产品,6个月免费体验

稳定可靠、可弹性伸缩的在线数据库服务,全球最受欢迎的开源数据库之一

云服务器9.9元/月,大学必备

热点导航