首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查询中未使用Greenplum索引

查询中未使用Greenplum索引
EN

Stack Overflow用户
提问于 2011-07-27 16:13:51
回答 4查看 1.4K关注 0票数 0

我已经创建了一个表T,其中有一个在列C (btree index)上创建的索引,但是当我运行select查询时,这个索引并没有被使用。

例如:

代码语言:javascript
复制
Explain select * from T where C='xxx'

这将按顺序在所有段中搜索,而不考虑我创建的索引。

我使用了以下标志

代码语言:javascript
复制
enable_seqscan = off
enable_bitmapscan = off
enable_indexscan = on

我错过了什么吗?请解释一下?

谢谢Ganesh.R

EN

回答 4

Stack Overflow用户

发布于 2011-07-27 22:25:51

无论出于何种原因,查询优化器都可能认为最好不要使用索引。此外,如果统计元数据已过期,则可能需要对表执行ANALYZE。有关更多详细信息,请参见this article (或others like it)。

票数 1
EN

Stack Overflow用户

发布于 2012-11-16 22:11:45

w/o explain analyze很难说清楚原因,但有几点:

  • GP使用非常高的random_page_cost,seq_page_cost是1。random_page_cost的默认值是100,这完全不鼓励优化器使用索引scans
  • enable_seqscan = off不会完全关闭seq扫描。seq扫描非常繁重

如果表很小(100 - 10k条记录),则按顺序读取它并忽略所有的索引可能会更快

票数 1
EN

Stack Overflow用户

发布于 2011-11-05 03:39:57

与传统的RDBMS不同,索引可能不是在Greenplum中访问数据的首选方法。

Greenplum是开箱即用的,它优先于表扫描而不是索引扫描,您必须进行大量调整才能改变这一点。您可以设置其他参数来帮助GP优化器选择索引,包括set enable_nestloop on, cpu_index_tuple_cost和其他索引。查看GP Admin guide的附录D,了解完整的可调参数集。

另外,您是如何分发数据的?这在优化器选择处理查询的方式中起着一定的作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6841306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档