2014-01-06 59 views
0

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

+1

如果你还不知道,你会意识到*如何做到这一点,你知道的机会*当*做到这一点很小〜对不对? – cHao

回答

0

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

如果它宁愿在你的查询序列扫描,这可能意味着:

  • 一个序列扫描真是再好不过了。要么是因为你正在抓取你的大部分表格,要么是因为你在整个地方抓取行。
  • 你没有在你的桌子上运行分析;分析表来修复。
  • 由于样本量不足,表格中收集的统计信息不准确;修改表/设置统计信息以解决问题。
  • 您已经遇到了最新版本的Postgres中修复的计划错误,或者需要向pg-peformance或pg-hacker列表报告;升级和/或报告错误进行修复。

更多的,往往不是第一的上述应用,它真的便宜做一个序列扫描。想想这样:想象你是邮差。按照发布的顺序传递信件,在这个过程中来回走过城镇,还是按顺序浏览每条街道时,a)您总共可以发送几封信,而b)您有每个街道提供几封信?使用索引与seq扫描的理性意味着类似的东西。

相关问题