Bri*_*n G 31 sql database indexing database-design
什么是不同类型的索引,每个索引的好处是什么?
我听说覆盖和聚集索引,还有更多吗?你会在哪里使用它们?
Chr*_*fer 31
正如文章中所说:
适当的索引对于大型数据库中的良好性能至关重要.有时你可以用一个好的索引来弥补写得不好的查询,但即使是最好的查询,也很难弥补糟糕的索引.
也是如此......如果你刚开始使用它,我会专注于聚簇和复合索引,因为它们可能是你最常用的.
小智 6
我将添加几种索引类型
BITMAP - 当你拥有非常少量的不同可能值时,非常快并且不会占用太多空间
PARTITIONED - 允许根据某些属性对索引进行分区,这些属性通常对非常大的数据库对象有利,这是出于存储或性能原因.
FUNCTION/EXPRESSION索引 - 用于根据表预先计算某些值并将其存储在索引中,一个非常简单的示例可能是基于lower()或子串函数的索引.
PostgreSQL允许部分索引,其中只有与谓词匹配的行被索引.例如,您可能希望仅为那些处于活动状态的记录索引customer表.这看起来像是这样的:
create index i on customers (id, name, whatever) where is_active is true;
Run Code Online (Sandbox Code Playgroud)
如果您的索引有很多列,并且您有许多非活动客户,那么就空间而言这可能是一个巨大的胜利(索引将存储在更少的磁盘页面中),从而提高性能.要命中索引,您至少需要指定谓词:
select name from customers where is_active is true;
Run Code Online (Sandbox Code Playgroud)