假设我在数据库表上有两个查询。关于数据库表中部分键和索引的问题
查询1:
查询是在查询中使用的字段来定义依赖于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查询引擎?
这个假设是关于B-TREE的,而不是其他类型的索引。维基百科有关于HASH,GIN,GIST,RED-BLACK等的信息。深入了解数据库的手册,它还包含有关索引实现的更多信息。 – 2010-06-26 16:56:59