一个SQL 查询的性能问题
来源:互联网 发布:淘宝鲁班系统 编辑:程序博客网 时间:2024/04/18 20:45
原本我们的SQL 是这么写的:
SELECT /*+ INDEX (rts RCV_TRANSACTIONS_N16) */ ... FROM ... WHERE ... AND rts.source_document_code = 'PO' AND nvl(rts.invoice_status_code,'NA') IN ('PENDING','REJECTED') AND rts.transaction_type = X_receipt_event
这么写是没有问题的, INDEX RCV_TRANSACTIONS_N16 是为这3个字段建的索引:
PO RCV_TRANSACTIONS_N16 NONUNIQUE VALID FUNCTION-BASED NORMAL SOURCE_DOCUMENT_CODE TRANSACTION_TYPE NVL("INVOICE_STATUS_CODE",'NA')
这样就会先通过这个索引查询出数据, 再用其他条件过滤.
但是后来因为一个其他bug, 把查询条件改了, 加了一些其他条件:
AND rts.source_document_code = 'PO'AND nvl(rts.invoice_status_code,'NA') IN ('PENDING','REJECTED') AND ((rts.transaction_type = X_receipt_event) OR (X_include_timecard_correct = 'Y' AND rts.transaction_type = 'CORRECT' AND rts.timecard_id is not null AND exists(select 1 from rcv_transactions prt where prt.transaction_type = 'RECEIVE' and prt.SOURCE_DOCUMENT_CODE = 'PO' and prt.transaction_id = rts.parent_transaction_id and prt.invoice_status_code ='INVOICED')))
里面多了子查询. 这样再用这个索引查数据的时候, 性能变得极差.
具体怎么改还没想好, 不过子查询应该是不用了. 需要改一下然后测试执行计划是不是正常.
0 0
- 一个SQL 查询的性能问题
- Sql Server 模糊查询的性能问题
- SQL server 查询性能的问题
- 一个Sql查询问题
- SQL SERVER 2000 的一个查询问题
- 关于sql查询语句 的一个问题
- 一个关于sql子查询的问题
- SQL语句的性能查询
- 一个SQL语句查询问题(查询最小值
- 群里面看到的一个sql查询的问题
- 一个关于查询时SQL自动掉线的问题!!
- 关于SQL组合查询问题的一个思考
- SQL查询字符串和数字的一个问题
- SQL查询的问题
- 节约性能的一个sql
- SQL Server提高查询性能的方法
- 一些常用查询性能的sql
- SQL注意的性能问题
- POJ1067 取石子游戏 威佐夫博弈
- 如何实现 基本数据类型 与 基本数据封装类 之间的相互转换
- 开源License对比分析
- tar 打包文件--- 不包含文件所在路径的方法
- GCD
- 一个SQL 查询的性能问题
- python的argparse模块的使用
- UITableView--区头跟随表一起滑动的效果
- java语法基础
- 抽象类 OR 接口
- html utf-8 编码空格宽度 非两个空格=一个汉字
- 多核:操作系统模式:AMP(异构Soc)开发难点
- 提交App Store前,使用Adhoc模式在生产环境中测试Push Notifications功能
- 对一帧YUV进行H264编码