我有一个SQL查询看起来非常简单。然而,它在生产中表现不佳。任何改善性能的建议将不胜感激。请求优化SQL查询的提示
SELECT DISTINCT CUSTOMERS.CUST_ID,
CUSTOMERS.FNAME,
CUSTOMERS.LNAME,
CUSTOMERS.CURR_STAT,
CUSTOMERS.CREATE_TIME,
CUSTOMERS.ROUTE_NBR,
FROM CUSTOMERS
INNER JOIN
INVS
ON
CUSTOMERS.CUST_ID = INVS.CUST_ID
WHERE
CUSTOMERS.ROUTE_NBR = 'A10' AND
(
CUSTOMERS.LAST_UPD_DT >= ? OR
CUSTOMERS.CURR_STAT IN ('PRE' , 'POST' , 'REV')
) AND
CUSTOMERS.CURR_STAT NOT IN ('START' , 'END' , 'REJ') AND
(
INVS.INV_CODE = 'AVL' OR
INVS.INV_CODE = 'ONORD'
)
有以下列Customers表上的索引:
- ROUTE_NBR
- CUST_ID
- CREATE_TIME
- CURR_STAT
难道做一个显著如果指数包括LAS,则差异T_UPD_DT列而不是CREATE_TIME列来反映谓词?任何其他可以改进的地方?谢谢。
是所有四个列或每个索引的索引? –
什么数据库?表格中的行数是多少? – ULick
还有没有其他'CURR_STAT'不在你在查询中使用的那些6上? –