zoukankan      html  css  js  c++  java
  • postgreSQL 的索引

    索引概述

           索引可以帮助我们更快的查找和获取指定的行数据,是增强数据库性能的常用手段,但是如果数据库索引使用不合理反而会降低数据库性能,所以我们需要了解索引的相关原理和使用规范。

    创建索引语句为:CREATE INDEX test1_id_index ON test1 (id);
    删除索引语句为:DROP INDEX test1_id_index;

           索引被创建以后,当向表中插入更新数据时,会自动被触发更新索引,所以在表上创建非必须的索引会导致更多的开销,意味着插入数据会变慢。更新、删除和join索引列也会优化查询,使查询更快。
           给已有大量数据的表添加索引会需要一段长的时间。但是在创建索引的时间内,查询还是可以执行的(多线程),但是插入、更新和删除会被阻塞。

    索引的种类

    postgreSQL的索引有如下几类:B-tree、Hash、 GiST、SP-GiST、GIN、BRIN。每个索引都有特定的算法来匹配不同的类型数据的查询。

    B-tree 索引可以应用于相等和值范围的查询,例如:<,<=,=,>=,>, betwee, in, is null, is not null也适用 like 'foo' , ~ '^foo' ,like 'foo%',但不适用like ‘%foo’。B-tree也支持排序,虽然他有些情况下不比简单的扫描和排序快,但通常也是有用的。B-tree适合大多数数据类型,也是CREATE INDEX 命令默认创建使用的索引。

    GIST索引适用于像like '%foo';的模糊查询,如create extension if not exists pg_trgm; CREATE INDEX trgm_idx ON test_trgm USING GIST (t gist_trgm_ops);

    BRIN 索引是Block Range Index的简称,适用块的区域搜索,即物理位置是相邻的。如设备上报的事件,按事件顺序排列并插入,查询一段时间内的事件。这一段时间内的订单存储的物理位置是相邻的。如果物理位置不相邻,可以使用如下命令整理CLUSTER [VERBOSE] table_name [ USING index_name ]

  • 相关阅读:
    Visual Studio 2019 开发 Python 及
    Delphi 的环境配置
    Delphi 的 TMS 控件安装方法
    网络爬虫-书籍与框架
    建筑行业(项目管理) BI 数据可视化分析案例
    DeepNude(一健脱衣)的算法以及通用图像生成的理论与实践研究
    matlab生成HEX文件-任意信号 大于64K长度
    SDRAM总结
    function [ binary,decimal ] = num2binary16( number )
    任意时钟分频
  • 原文地址:https://www.cnblogs.com/seasail/p/12179351.html
Copyright © 2011-2022 走看看