gpt4 book ai didi

sql - 关于部分键和数据库表索引的问题

转载 作者:行者123 更新时间:2023-11-29 01:01:07 24 4
gpt4 key购买 nike

假设我对一个数据库表有两个查询。

查询是根据查询中使用的字段定义的:

查询1:依赖于f1、f2、f3

查询2:依赖于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}

我有两个问题:

  1. 我的假设是否正确?即我可以简单地定义一个索引 (the_idx) 而不是前两个吗?

  2. 这种索引行为是否也适用于 PostgreSQL 查询引擎?

最佳答案

Is my assumption correct?. i.e. can I simply define the one index (the_idx) instead of the previous two?

是的。
它称为覆盖索引,您希望根据最有可能被查询使用的列对列进行排序。 IE:如果 f2 是最常见的列,你会想使用:

CREATE INDEX the_idx {f2, f1, f3, f4}

Does this index behavior hold true for PostgreSQL query engine as well?

不,Postgres does not support covering indexes .

索引不是 ANSI 标准;供应商之间的术语如此一致真是个奇迹。

关于sql - 关于部分键和数据库表索引的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3124213/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com