Sql 如何在此查询中使用索引来提高性能

Sql 如何在此查询中使用索引来提高性能,sql,database,postgresql,Sql,Database,Postgresql,这就是问题所在 SELECT cs_checkroll_txn_id,ad_division_id,ad_fld_info_id,transaction_date,mandays,man_day_type,ot_hours,ot_type,norm, qty, over_qty, lent_devision,lent_field_no,block_no, latex_ltr, drc,latex_kg,scarp, condition, noofbushes, wt_bunch,harvest

这就是问题所在

 SELECT cs_checkroll_txn_id,ad_division_id,ad_fld_info_id,transaction_date,mandays,man_day_type,ot_hours,ot_type,norm, qty, over_qty, lent_devision,lent_field_no,block_no, latex_ltr, drc,latex_kg,scarp, condition, noofbushes, wt_bunch,harvest_round,w.work_code work_code,w.work_category work_category,w.unit_of_measure unit_of_measure,w.isnorm,r.type,r.rate_code rate_code,reguler_norm, regular_over,reguler_extra, sunday_norm, sunday_over,sunday_extra, holiday_norm, holiday_over,holiday_extra, special_day_norm,special_day_extra, unit, special_day_over 
 FROM adempiere.cs_checkroll_txn t,adempiere.cs_work_code w,adempiere.ad_checkroll_rates r 
 WHERE t.cs_work_code_id = w.cs_work_code_id 
    AND w.ad_checkroll_rates_id = r.ad_checkroll_rates_id 
    AND iscontract <> 'Y' 
    AND t.isactive = 'Y' 
    AND w.isactive = 'Y' 
    AND r.isactive = 'Y' 
    AND t.cs_worker_cont_id = 1005312 
    AND t.ad_client_id = 1000002 
    AND t.ad_org_id = 1000042 
    AND t.transaction_date between to_date('20130401','yyyymmdd') 
    AND to_date('20130930','yyyymmdd')
选择cs\u支票簿\u txn\u id、ad\u部门\u id、ad\u fld\u信息\u id、交易日期、工作日、工作日类型、加班时间、加班类型、定额、数量、加班数量、借出分区、借出字段号、区块号、乳胶ltr、drc、乳胶千克、围巾、状况、无头巾、wt\u束、收获轮、w.工作代码、w.工作类别工作代码、w.工作类别、w.计量单位、ISU.w,r、 类型,r.rate\u code rate\u code,reguler\u Normal,reguler\u extra,sunday\u Normal,sunday\u over,sunday\u extra,holiday\u Normal,holiday\u extra,special\u day\u Normal,special\u day\u extra,unit,special\u day\u over
来自adempiere.cs\u checkroll\u txn t,adempiere.cs\u work\u代码w,adempiere.ad\u checkroll\u费率r
其中t.cs\U工作\U代码\U id=w.cs\U工作\U代码\U id
w.ad\u checkroll\u rates\u id=r.ad\u checkroll\u rates\u id
而且是合同“Y”
t.isactive='Y'
w.isactive='Y'
r.isactive='Y'
和t.cs_工人_cont_id=1005312
和t.ad_客户id=1000002
和t.ad_org_id=1000042
交易日期介于至日期('20130401','yyyymmdd')之间
截至日期('20130930','yyyymmdd')

一般规则是为所有需要频繁搜索或排序的列创建索引。在您的情况下,这是:

t.cs_work_code_id 
w.cs_work_code_id 
w.ad_checkroll_rates_id 
r.ad_checkroll_rates_id 
iscontract
t.isactive
w.isactive
r.isactive
t.cs_worker_cont_id 
t.ad_client_id 
t.ad_org_id
t.transaction_date 

我很可能会建立一个索引,其中包含ad_org_id、ad_client_id、cs_worker_cont_id字段。假设这是它们在熵中的顺序