基于PostgreSQL,总结几条常用的查询操作的优化建议,部分也适用于Oracle等数据库. 1.选择合适的分布键 分布键选择不当会导致重分布.数据分布不均等,而数据分布不均会使SQL集中在一个segment节点的执行,限制了gp整体的速度.查看某表是否分布不均: select gp_segment_id,count(*) from table_name group by gp_segment_id ; 例子如图: 2.使用分区表 按照某字段进行分区,不影响数据在数据节点上的分布,但是,仅在单…
1.Postgresql查询前几条记录的SQL语句 select * from table where ...... LIMIT N ; 2.SQL limit integer offset integer :经常用到在数据库中查询中间几条数据的需求. 比如下面的sql语句: ① select * from testtable limit 2,1; ② select * from testtable limit 2 offset 1; 这两个都是能完成需要,但是他们之间是有区别的: ① 是从数…
---"17:10:13.236"time without time zone:时:分:秒.毫秒 ---"17:10:13.236+08"time with time zone:时:分:秒.毫秒+时区 ---"2016-06-02 17:18:25.281"timestamp without time zone:年月日时:分:秒.毫秒 ---"2016-06-02 17:18:25.281+08"timestamp with…
在postgresql中的between and操作符作用类似于,是包含边界的 a BETWEEN x AND y 等效于 a >= x AND a <= y 在postgresql中比较日期的方法有四种: 方法1: select * from user_info where create_date >= '2015-07-01' and create_date <= '2015-08-15'; 方法2: select * from user_info where create_d…
示例表 table t_ex; c1 | c2 ----+---- 2 | B 4 | C 6 | A 2 | C 4 | B 6 | B 2 | A 4 | B 6 | C 2 | C 以下SQL语句有序地返回"c1"列中唯一值: select distinct on(c1) * from abce; 对于c2列,会根据c1的唯一性,从表中找到的第一个值. postgres=# select distinct on(c1) * from abce; c1 | c2 ----+----…
CREATE SEQUENCE circlefence_id_seq START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE CACHE 1; alter table circlefence alter column id set default nextval('circlefence_id_seq');…
想看下某模式下所有表创建的分布键是否合理,查找系统表文档拼出如下sql,亲们如果有更好的sql或者意见欢迎留言! SELECT aaa.nspname AS "模式名", aaa.relname AS "表名", aaa.table_comment AS "中文表明", ccc.attname AS "分布键" FROM ( SELECT aa.…
一.插入数据 说到插入数据,一开始就想到: insert int A values(*******************) 插入多条数据,最多想到:写成这样: insert into A values(**********),(*************),(*****************) 但是在百万数据面前,都太慢了. 1.用脚本的方式 #!/bin/bash strsql="insert into tbl_devaccess8021x (uidrecordid, dtaccessti…