考虑通用查询:
SELECT * FROM (
SELECT COL_1, COL_2, COL_3 FROM TABLE_1
WHERE COL_1 IN ('item1', 'item2')
AND COL_2 = 100
ORDER BY COL_3
) subquery1
INNER JOIN
(
SELECT COL_A, MAX(COL_B) FROM TABLE_2
GROUP BY COL_A
HAVING COUNT(COL_B) > 2
) subquery2
ON subquery1.COL_1 = subquery2.COL_A
假设查询本身已经过优化。如果我想创建一个优化的'像这样的查询索引,我应该创建什么索引?特别是,哪个订单是索引'列是?
根据我的理解,第一列应该是WHERE
子句中使用的列,然后是ORDER BY
子句,最后是SELECT
子句。这是真的?那些其他内容,例如GROUP BY
,HAVING
&和JOIN
& - 应该何时考虑?
如有必要,还假设这是一个Oracle数据库。 (但我想其他平台的列排序也是一样的。)