sql 代替 in
sql语句:select*fromtableAwhereagein(1,2,6,9)1,2,6,9是定死了的.不是子查询查出来的.是不会改变的.请问有没有效率更高点的办法...
sql语句: select * from tableA where age in (1,2,6,9)
1,2,6,9是定死了的. 不是子查询查出来的 .是不会改变的.
请问有没有效率更高点的办法呀 效率太低了.. 展开
1,2,6,9是定死了的. 不是子查询查出来的 .是不会改变的.
请问有没有效率更高点的办法呀 效率太低了.. 展开
4个回答
展开全部
--可试试:
select * from tableA where age = 1
union all
select * from tableA where age = 2
union all
select * from tableA where age = 6
union all
select * from tableA where age = 9
;
思路:
1.避免用in,分开来查,再用union all .
2.实际效率取决于表的实际情况:数据量,索引等。
select * from tableA where age = 1
union all
select * from tableA where age = 2
union all
select * from tableA where age = 6
union all
select * from tableA where age = 9
;
思路:
1.避免用in,分开来查,再用union all .
2.实际效率取决于表的实际情况:数据量,索引等。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
分别查询然后再用union all的方式当然可以。不过你这样写也没什么大问题。完全的避免 in 操作,有点太学究了,书上和资料讲的,不一定全对,至少不一定适合所有的场景。
我试过3,50万条数据,用in,也慢不到哪儿去,为了提高0.00001%的性能,搞出一个复杂的算法来,真是没必要。
你还是用执行计划分析分析,这个查询的问题吧。如果在age上有索引,效率应该没什么问题。
我试过3,50万条数据,用in,也慢不到哪儿去,为了提高0.00001%的性能,搞出一个复杂的算法来,真是没必要。
你还是用执行计划分析分析,这个查询的问题吧。如果在age上有索引,效率应该没什么问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用我这个吧
select a.*
from tableA a join (select 1 as col union seldect 2 union select 6 union select 9 ) b on a.age = b.col
然后再age 上加索引
这样应该快很多
select a.*
from tableA a join (select 1 as col union seldect 2 union select 6 union select 9 ) b on a.age = b.col
然后再age 上加索引
这样应该快很多
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1 select * from tableA where age=1 or age=2 or age=6 or age-9;
2 exists对你这个可能不太适用。exists比in要高效。
2 exists对你这个可能不太适用。exists比in要高效。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询