假设我对数据库表有两个查询。
查询是根据查询中使用的字段定义的:
Query1:取决于 f1、f2 和 f3
Query2:取决于 f1、f2、f3 和 f4
我记得在某处读到 SQL 查询引擎(在本例中为 mySQL)从索引中最左侧的字段开始解析索引树。
如果这是正确的,那么我假设不是像这样在表上定义两个索引:
Index 1 (for Query1) : CREATE INDEX idx_1 {f1, f2, f3}
Index 2 (for Query2) : CREATE INDEX idx_2 {f1, f2, f3, f4}
我可以简单地定义一个索引,其中包含两个查询中使用的键的联合——即
我只需要定义这个索引:
(for BOTH Query1) : CREATE INDEX the_idx {f1, f2, f3, f4}
我有两个问题:
我的假设正确吗?即我可以简单地定义一个索引(the_idx)而不是前两个吗?
这种索引行为是否也适用于 PostgreSQL 查询引擎?