Advertisement

第5篇优化Oracle in语句使用限制

阅读量:
复制代码
    说明:
    MySQL:IN 语句中参数个数是不限制的,但是对整个SQL语句的长度有了限制。
       8.0之前的版本默认4M,最大可设置为1G
       8.0版本之后默认64M,最大可设置1G。(可通过修改 max_allowed_packet 值来修改默认大小
    
    Oracle:IN语句中参数个数有限制:
       9i版本,最多256条
       10g版本,最多1000条
       11g版本,最多1000条
    
    
      
      
      
      
      
      
      
      
      
    
复制代码
    我们在写查询语句,涉及到 IN 或者 NOT IN 的时候,一般都是这样写:
    SELECT * FROM user u WHERE u.id IN ('id001', 'id002', 'id003')
    但是,对于Oracle而言,IN 或者 NOT IN 语句中数据项个数最大不能超过1000条(9i版本是256条),那么如何优化这种语句呢?
    可以这样写包含IN的查询语句:
    SELECT * FROM user u WHERE (1, u.id) IN ((1, 'id001'),(1,'id002'

全部评论 (0)

还没有任何评论哟~