我可以控制postgresql使用专用索引吗?

时间:2014-01-06 06:47:23

标签: postgresql postgresql-9.1

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

1 个答案:

答案 0 :(得分:0)

Postgres中没有索引提示,核心开发者没有兴趣添加任何内容。首选方法是在查询计划程序执行某些操作时进行修复。

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

  • seq扫描确实更好。要么是因为你拿走了你的大部分桌子,要么是因为你在整个地方都拿到了行。
  • 你没有在桌子上进行分析;分析表来修复。
  • 您桌上收集的统计数据不准确,因为样本量不足; alter table / set statistics to fix。
  • 你遇到过计划错误,这些错误要么在Postgres最新修复,要么需要报告给pg-peformance或pg-hackers列表;升级和/或报告要修复的错误。

通常情况下,上述第一个适用,并且执行seq扫描确实 更便宜。可以这样想:想象你是邮差。是不是按照发布的顺序递送信件,在整个过程中来回穿过城镇,或者按顺序通过每条街道a)你总共提交几封信件而不是b)你是不是很努力每条街上发几封信?使用索引与seq扫描的合理性相当于这样。