在Oracle中用COLUMN_VALUE

本文介绍了一种使用EXISTS代替IN子句以及将输入参数转换为表的方法来优化SQL查询效率。通过这种方式可以减少hint数据并加快查询速度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

            SELECT A20.*
              FROM A20_ITEM A20
             WHERE A20.DATE = '20181230'
              AND EXISTS(
                    SELECT 1 FROM TABLE(FC_MAKE_IN(NVL(TRIM(WK_JANITF_CD), A20.ITEM_CD)))
                            WHERE A20.ITEM_CD = COLUMN_VALUE

                  )

前台传入WK_JANITF_CD为多个数值用FC_MAKE_IN转化成 [ IN ('XXX','XXX','XXX') ] 所需要的格式,

然后用COLUMN_VALUE条件筛选出所需要的数据。

point

 1. 用EXISTS代替IN 

 2.把前台传来的数值转化成一个table

这样的话会减少hint数据 提高执行效率 减少执行所用时间 

以后详细补充。


@Table("FLOW_NODE_PARAMETER_CONFIG") public class FlowNodeParameterConfig implements Serializable { private static final long serialVersionUID = 1L; //通用字段 @Id @Column("ID") private Long id; //id--唯一标识 @Column("NODE_ID") private String nodeId; //该参数属于哪一个节点 @Column("PARAMETER_ROLE") private Integer parameterRole; // parameterRole --该参数是入参还是出参还是用于转换 @Column("PARAMETER_NAME") private String parameterName; // PARAMETER_NAME --参数名 @Column("PARAMETER_TYPE") private Integer parameterType; // PARAMETER_TYPE --参数类型 String/Date/Long ... @Column("VALUE_ACQUIRE_METHOD") private Integer valueAcquireMethod; //valueAcquireMethod --该参数的值的获取方式 例如,sql/前端传入 @Column("VALUE_ACQUIRE_EXPRESSION") private String valueAcquireExpression; // valueAcquireExpression --获取该参数值的表达式,若valueAcquireMethod是sql,那么这里就是一个sql @Column("RESULT_VALUE") private Object resultValue; // --该参数的具体值 即:执行完 valueAcquireExpression 之后的具体值是什么,方便后续节点使用 //以下字段仅用于返回值和数据库字段对应的时候使用,即:对数据库做增删改操作的时候使用 @Column("LOCAL_TABLE_COLUMN_NAME") private String localTableColumnName; //目标数据库的列名 @Column("LOCAL_TABLE_COLUMN_TYPE") private String localTableColumnType;//目标数据库的列类型 帮我生成 oracle的建表语句,并且生成 mybatis-flex 框架下的 mapper 和service 和serviceImpl
03-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值