日期:2014-05-17  浏览次数:20776 次

@@请问这条语句怎么优化!!!
String sql="select t1.doma_airrount, t2.dopa_ticketcode from ticket_passengerinfo t2 " +
" left join ticket_domesticmain t1 on t2.doma_id = t1.doma_id " +
"where t1.doma_airrount = trim(?) and t1.DOMA_STATUS<>'11' and t2.dopa_ticketcode = trim(?) " +
"and t2.DOPA_TICKETSTATUS=trim(?)";

需要怎么添加索引?还要where 条件顺序?

------解决方案--------------------
ticket_domesticmain表 字段doma_id 、doma_airrount分别建立索引
ticket_passengerinfo 字段doma_id 、dopa_ticketcode、DOPA_TICKETSTATUS分别建立索引
当然也可考虑组合索引,可根据你表中数据的分布情况
建立索引后,根据执行计划来进一步优化
当然,在应用程序中要尽量使用绑定变量的方式。
------解决方案--------------------
连接字段加索引,t1.doma_airrount t2.dopa_ticketcode t2.DOPA_TICKETSTATUS三列,过滤性高的(即重复值少的)建索引。t1.DOMA_STATUS没必要建索引,不等于操作,永远不会用到索引!


至于用Inner join 好还是left join,要看你的结果要求,如果没有外连接要求,则Inner join足亦。
------解决方案--------------------
探讨

ticket_domesticmain表 字段doma_id 、doma_airrount分别建立索引
ticket_passengerinfo 字段doma_id 、dopa_ticketcode、DOPA_TICKETSTATUS分别建立索引
当然也可考虑组合索引,可根据你表中数据的分布情况
建立索引后,根据执行计划来进一步优化
当然,在应用程序中要尽量使用绑定变量的方式。