当前位置:  开发笔记 > 数据库 > 正文

什么是不同类型的索引,每个索引的好处是什么?

如何解决《什么是不同类型的索引,每个索引的好处是什么?》经验,为你挑选了4个好方法。

什么是不同类型的索引,每个索引的好处是什么?

我听说覆盖和聚集索引,还有更多吗?你会在哪里使用它们?



1> Chris Shaffe..:

唯一 - 保证索引中包含的列(或列集)的唯一值

覆盖 - 包括在特定查询(或查询集)中使用的所有列,允许数据库仅使用索引,而实际上不必查看表数据以检索结果

Clustered - 这是在磁盘上对实际数据进行排序的方式,这意味着如果查询使用聚簇索引来查找值,则不必采取额外的步骤来查找任何数据的实际表行不包括在索引中.


thanx它也很有帮助

2> Kevin Fairch..:

OdeToCode有一篇很好的文章介绍了基本的差异

正如文章中所说:

适当的索引对于大型数据库中的良好性能至关重要.有时你可以用一个好的索引来弥补写得不好的查询,但即使是最好的查询,也很难弥补糟糕的索引.

也是如此......如果你刚开始使用它,我会专注于聚簇和复合索引,因为它们可能是你最常用的.



3> 小智..:

我将添加几种索引类型

BITMAP - 当你拥有非常少量的不同可能值时,非常快并且不会占用太多空间

PARTITIONED - 允许根据某些属性对索引进行分区,这些属性通常对非常大的数据库对象有利,这是出于存储或性能原因.

FUNCTION/EXPRESSION索引 - 用于根据表预先计算某些值并将其存储在索引中,一个非常简单的示例可能是基于lower()或子串函数的索引.



4> dland..:

PostgreSQL允许部分索引,其中只有与谓词匹配的行被索引.例如,您可能希望仅为那些处于活动状态的记录索引customer表.这看起来像是这样的:

create index i on customers (id, name, whatever) where is_active is true;

如果您的索引有很多列,并且您有许多非活动客户,那么就空间而言这可能是一个巨大的胜利(索引将存储在更少的磁盘页面中),从而提高性能.要命中索引,您至少需要指定谓词:

select name from customers where is_active is true;

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有