您的位置:首页 > 数据库

数据库查询过程中条件过多如何解决?

2010-05-16 19:34 274 查看
有如下查询语句:

select * from t_table where id in(id1,id2,...id10000)这种情况一般不会多见。在oracle中执行会抛"ORA-01795:表达式超过1000列"的异常

如何解决这个问题呢?

1) 将"in"表达式中的条件数据分为多份"or in"的表达式来执行。改变的代码如下

select * from t_table where id in (id1, id2, id3)

or id in(id4,id5,id6)...

这种方法比较简便,但不易于维护。而且当id量过大时,分组过多效率也会很低。

2) 可以通过临时表来解决问题

a) 创建临时表tbIdGroud,其中只有一个字段id,且为主键。

b) 将大批量的id条件插入tbIdGroud

c) 关联t_table,tbIdGroud进行多表查询。

这种需要将条件数据插入临时表,会有一定的性能消耗,当id量不是超大时一般不推荐使用。

3) 需求过程中的解决

这种问题的出现,可以回过来想是否在需求上还可以有更好的方法。可以通过以下方法类避开这个问题

a) 当提交时超过一定数量的条件进入时,异常处理。

b) 试着用模糊查询或定位查询来替换。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐