基于SQL查询的正确索引列排序是什么?

时间:2015-12-18 19:58:04

标签: oracle indexing query-optimization database-indexes

考虑通用查询:

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 BYHAVING&和JOIN& - 应该何时考虑?

如有必要,还假设这是一个Oracle数据库。 (但我想其他平台的列排序也是一样的。)

0 个答案:

没有答案