【问题标题】:Can I control postgresql to use a dedicated index? [duplicate]我可以控制 postgresql 使用专用索引吗? [复制]
【发布时间】:2014-01-23 12:51:15
【问题描述】:

众所周知,mysql数据库中有一个叫做“强制索引”的命令。因此,无论优化器是否喜欢,这都会强制 mysql 使用索引。我的困惑是如何在 postgresql 上做同样的事情? 任何回复将不胜感激。

【问题讨论】:

  • 你确实意识到,如果你还不知道如何去做,那么你知道何时去做的可能性很小——没有……对吗?

标签: postgresql postgresql-9.1


【解决方案1】:

Postgres 中没有索引提示,核心开发人员也没有兴趣添加任何索引提示。首选方法是在查询计划器做一些愚蠢的事情时对其进行修复。

如果它更喜欢在您的查询中进行 seq 扫描,则可能意味着:

  • seq 扫描确实更好。要么是因为您要获取大部分表格,要么是因为您绝对要在所有地方获取行。
  • 您没有在您的表上运行分析;分析要修复的表。
  • 您的表格中收集的统计数据不准确,因为样本量不足;更改表/设置要修复的统计信息。
  • 您遇到了在 Postgres 中最新修复或需要报告给 pg-peformance 或 pg-hackers 列表的计划程序错误;升级和/或报告要修复的错误。

通常情况下,上面的第一个适用,并且进行 seq 扫描确实更便宜。这样想:想象你是邮递员。是按照邮寄的顺序递送信件,在这个过程中来回穿梭在城镇中,还是在a)你总共有几封信要递送而b)你已经每条街道送几封信?使用索引与 seq 扫描的理由大致相同。

【讨论】:

    猜你喜欢
    • 2021-11-12
    • 1970-01-01
    • 2014-10-07
    • 2017-03-29
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 2020-12-14
    • 2015-10-29
    相关资源
    最近更新 更多