gpt4 book ai didi

sql - 我怎样才能使一个索引优先于另一个索引?

转载 作者:行者123 更新时间:2023-11-29 13:02:06 26 4
gpt4 key购买 nike

我有以下代码:

SELECT * FROM table WHERE column1='value1' AND column2='value2';

column1 有一个索引,column2 有一个索引。

我如何告诉 Postgres 更喜欢第二个索引?我应该把它放在第一位吗?

最佳答案

你不能直接告诉 Postgres 喜欢哪个索引。这也没有意义,除非是极少数极端情况。

  • WHERE 子句中的表达式顺序完全不相关。查询规划器将应用它认为合适的谓词。

  • 您不仅限于使用一个索引。 Postgres 可以使用两者并将它们与位图索引扫描结合起来。 dba.SE 上的相关答案中的详细信息:

    但通常只使用 一个 索引并过滤其余索引会更有效。

  • 最后,您可以在两个 列上创建一个多列索引以优化性能。喜欢:

    CREATE INDEX foo ON tbl (column1, column2);

    甚至是 partial index如果您的谓词之一是常量(大多数或所有查询限制为 column2 = 'constant_value')并且此选择远小于整个表:

    CREATE INDEX foo ON tbl (column1) WHERE column2 = 'constant_value';

如果 Postgres 对查询计划做出了错误的选择,那么您的数据库中通常存在某些问题:

关于sql - 我怎样才能使一个索引优先于另一个索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26725731/

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