首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果我的索引是部分的,那么性能/索引大小会有明显的不同吗?

如果我的索引是部分的,那么性能/索引大小会有明显的不同吗?
EN

Stack Overflow用户
提问于 2016-11-30 06:05:38
回答 1查看 40关注 0票数 0

假设我有一个包含2000万行的表,我想这样索引如下:

代码语言:javascript
运行
AI代码解释
复制
CREATE INDEX fruit_color
  ON fruits
  USING btree
  (color);

现在让我们说,只有2%的水果有颜色,休息将是NULL。我的查询将不会希望找到带有颜色NULL (无颜色)的水果,所以问题是,如果我将索引更改为:

代码语言:javascript
运行
AI代码解释
复制
 CREATE INDEX fruit_color
  ON fruits
  USING btree
  (color)
  WHERE color IS NOT NULL;

我不太了解postgresql处理索引的内部方式,所以我就问这个问题。

PS postgresql版本为9.2

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-01 01:57:05

是的,那会有不同的。差异有多大程度取决于索引的使用方式。

如果只有一个带有特定颜色的水果,并且您按颜色搜索这个水果,那么它不会有太大的区别;可能会少一个页面(因为索引的深度可能会减少一个级别)。

如果有许多特定颜色的水果,这将是很大的改进,因为它将更便宜地扫描整个索引(位图索引扫描)或更大的一部分(常规或仅索引扫描)。如果索引很大,PostgreSQL将更不愿意扫描完整的索引,可能会选择顺序表扫描。

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

https://stackoverflow.com/questions/40890438

复制
相关文章

相似问题

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