今天在生产环境中发现一条sql语句尽管走了主键索引,但是查询还是很慢。 sql语句类似下面的形式: SELECT /*+ index (bl1_cyc_payer_pop BL1_CYC_PAYER_POP_PK) */ T_TAX.BA_NO, T_TAX.TOTAL_TAX_AMT, T_TAX.TAX_RELATION, T_TAX_ITEM.TAX_ITEM_SEQ_NO, T_TAX_ITEM.TAX_SEQ_NO, T_TAX_ITEM.TAX_AUTHORITY, T_TAX_ITEM.TAX_TYPE, T_TAX_ITEM.TAX_RATE, T_TAX_ITEM.TAX_AMOUNT, T_TAX_ITEM.TAXABLE_AMOUNT, ……. FROM T_TAX, T_TAX_ITEM, T_DOCUMENT, T_CYC_PAYER_POP –这几张都是大表,少则500万左右,多则1000多万。 WHERE T_TAX.TAX_ITEM_PERIOD_KEY = T_TAX_ITEM.PERIOD_KEY AND T_TAX.CUSTOMER_KEY = T_CYC_PAYER_POP.CUSTOMER_KEY AND T_TAX.BA_NO = T_CYC_PAYER_POP.BA_NO AND T_TAX.CYCLE_SEQ_NO = T_CYC_PAYER_POP.CYCLE_SEQ_NO AND T_TAX.CYCLE_SEQ_RUN = T_CYC_PAYER_POP.CYCLE_SEQ_RUN AND T_TAX.PERIOD_KEY = T_CYC_PAYER_POP.PERIOD_KEY AND T_TAX_ITEM.CUSTOMER_KEY = T_CYC_PAYER_POP.CUSTOMER_KEY AND T_TAX_ITEM.TAX_SEQ_NO = T_TAX.TAX_SEQ_NO AND T_DOCUMENT.PERIOD_KEY = T_CYC_PAYER_POP.PERIOD_KEY AND T_DOCUMENT.CUSTOMER_KEY = T_CYC_PAYER_POP.CUSTOMER_KEY AND T_DOCUMENT.BA_NO = T_CYC_PAYER_POP.BA_NO AND T_DOCUMENT.CYCLE_SEQ_NO = T_CYC_PAYER_POP.CYCLE_SEQ_NO AND T_DOCUMENT.CYCLE_SEQ_RUN = T_CYC_PAYER_POP.CYCLE_SEQ_RUN AND T_DOCUMENT.DOC_PRODUCE_IND IN (‘Y’, ‘E’) AND T_CYC_PAYER_POP.CUSTOMER_KEY = 78 AND T_CYC_PAYER_POP.PERIOD_KEY = 55 AND T_CYC_PAYER_POP.QA_GROUP = 3 AND T_CYC_PAYER_POP.CYCLE_SEQ_NO = 2925