postgre建索引方法:
单字段索引:
CREATE INDEX index_name ON table_name (field1);
联合索引:
CREATE INDEX index_name ON table_name (field1,field2);
如果创建单列索引中列值有很多重复,而联合查询的and列没有重复项,最好创建这两个字段的联合索引,提高查询速率
在postgre里,联合索引的使用,在select里的where条件是要求有序的,比如where field1=100和where field1=100 and field2=1000都可以利用到上面这个组合索引(多条件尽量不要用or,至少用UNION代替OR,用or也用不到联合索引),但使用where field2=1000就利用不到索引了。
例如
mytest=# \d tbl_real_net
Table "public.tbl_real_net"
Column | Type | Modifiers
---------+---------+--------------------
real_id | integer | not null default 0
net_id | integer | not null default 0
Indexes:
"tbl_real_net_pkey" PRIMARY KEY, btree (real_id, net_id)
"index_real_net" btree (real_id, net_id)
mytest=# explain SELECT * from tbl_real_net where net_id = 4 ;
QUERY PLAN
---------------------------------------------------------------------
Seq Scan on tbl_real_net (cost=0.00..174020.00 rows=50000 width=8)
Filter: (net_id = 4)
(2 rows)
没有用到索引
mytest=# explain SELECT * from tbl_real_net where net_id = 4 and real_id = 3;
QUERY PLAN
----------------------------------------------------------------------------------
Bitmap Heap Scan on tbl_real_net (cost=5.42..955.61 rows=250 width=8)
Recheck Cond: ((real_id = 3) AND (net_id = 4))
-> Bitmap Index Scan on tbl_real_net_pkey (cost=0.00..5.36 rows=250 width=0)
Index Cond: ((real_id = 3) AND (net_id = 4))
(4 rows)
用到联合索引
mytest=# explain SELECT * from tbl_real_net where real_id = 3;
QUERY PLAN
--------------------------------------------------------------------------------------
Bitmap Heap Scan on tbl_real_net (cost=940.85..52372.32 rows=50000 width=8)
Recheck Cond: (real_id = 3)
-> Bitmap Index Scan on tbl_real_net_pkey (cost=0.00..928.35 rows=50000 width=0)
Index Cond: (real_id = 3)
用到单个real_id的索引
mytest=# explain SELECT * from tbl_real_net where net_id = 4 or real_id = 3;
QUERY PLAN
---------------------------------------------------------------------
Seq Scan on tbl_real_net (cost=0.00..199020.00 rows=99750 width=8)
Filter: ((net_id = 4) OR (real_id = 3))
(2 rows)
未用到联合索引
如果创建的是单列索引,上述情况都能用到
分享到:
相关推荐
"数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...
创建索引 数据索引 课程目标 理解 —— 创建索引的语法; 掌握 —— 在已有表上创建索引的方法; 掌握 —— 在修改表时添加索引的方法; 掌握 —— 在创建表时创建索引的方法。 创建索引 使用CREATE INDEX语句创建...
Oracle 在线创建索引和重组索引 Oracle 在线创建索引和重组索引是数据库管理员经常需要处理的问题。在线创建索引可以提高查询性能,而重组索引可以减少索引的碎片化和空间浪费。下面我们将详细介绍在线创建索引和...
### Lucene3.0创建索引 在Lucene3.0中创建索引是一个关键功能,可以帮助用户快速地检索和管理大量的文本数据。本篇文章将详细介绍如何使用Lucene3.0来创建索引,并通过一个具体的例子来演示整个过程。 #### 一、...
在SQL Server中,创建索引是一项关键的数据库优化技术,旨在加速数据检索速度,提高查询性能。本文将深入探讨如何在SQL Server中创建索引,包括理解不同类型的索引、索引的创建语法以及如何利用索引提升数据库性能。...
### Oracle中亿级记录表创建索引的知识点详解 #### 一、背景介绍 在Oracle数据库中处理亿级数据量的表时,合理的索引设计是优化查询性能的关键因素之一。索引能够加快数据检索的速度,减少I/O操作次数,但同时也...
"Oracle 海量数据中提升创建索引的速度" Oracle 海量数据中提升创建索引的速度是指在 Oracle 数据库中,特别是在海量数据的情况下,如何提高创建索引的速度。创建索引是数据库优化中的重要步骤,但是在海量数据的...
### 创建索引的作用及其利弊分析 在数据库管理与优化领域,索引是提升查询效率的重要工具之一。本文将从创建索引的作用出发,详细探讨其背后的技术原理、实际应用场景以及可能带来的利弊。 #### 一、索引的基本...
### Oracle 创建索引的基本规则 在Oracle数据库管理中,创建合适的索引对于提高查询效率、减少数据处理时间具有重要作用。本文将围绕Oracle创建索引的基本规则进行深入探讨,旨在帮助读者更好地理解如何根据不同的...
一、创建索引 在MySQL中,索引主要分为以下几种类型: 1. 主键索引(Primary Key Index):每个表只能有一个主键,不允许有重复值,且不能为NULL。 2. 唯一索引(Unique Index):与主键类似,唯一索引也确保列中...
**Lucene5学习之创建索引入门示例** 在IT领域,搜索引擎的开发与优化是一项关键技术,而Apache Lucene作为一款高性能、全文本搜索库,是许多开发者进行文本检索的首选工具。本文将深入探讨如何使用Lucene5来创建一...
lasticsearch整合分词、创建索引、搜索例子,elasticsearch版本为1.0,索引数据从数据表中动态读取生成,有关键字高亮效果,查询分页 1 在dababase目录中导致相关的数据库文件,修改DBCOperation java文件数据库连接...
CREATE INDEX Syntax CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [index_type] ON ... HASH | RTREE} 代码如下: — 创建无索引的表格 create table testNoPK ( id int not null, name varchar(10) ); — 创建
Lucene创建索引步骤: 1、创建Directory(索引位置) 2、创建IndexWrite(写入索引) 3、创建Document对象 4、为Document添加Field(相当于添加属性:类似于表与字段的关系) 5、通过IndexWriter添加文档到索引中
《创建索引和调优索引:SQL Server 2005中的索引管理》 在SQL Server 2005中,索引是数据库管理的关键要素,它们极大地提升了数据检索速度,尤其是在处理大规模数据时。索引可以分为多种类型,包括聚集索引和非聚集...
代码复制粘贴 改下里面的参数 就可以用 而且参数 也有说明 简单易懂
以脚本方式创建es 索引和结构映射. 莎士比亚在不经意间这样说过,本来无望的事,大胆尝试,往往能成功。我希望诸位也能好好地体会这句话。 一般来讲,我们都必须务必慎重的考虑考虑。 就我个人来说,我秃头了对我的...
在Oracle数据库管理中,合理创建索引是一项至关重要的任务,它直接影响着数据库的查询性能和整体效率。然而,创建索引并非简单的操作,而是一项需要深入理解和精心规划的工作。正如文档标题“Oracle创建索引要做到三...
elasticsearch5.5.1的javaapi,含创建索引、mapping、查询、增加删除文档
一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?.mp4 一个表中如果没有创建索引,那么还会创建B+树吗?....