postgres数据常用整理

常用函数
1、字符串函数
1)字符串拼接:||
2)字符串长度:length
3)字符串截取:substring(‘fsfd’ from 2 for 3)、substr(‘fsfd’,2,3)
4)字符串两头去字符:trim(’ fsf’)、trim(both ‘x’ from ‘xfdsx’)
5)大小写转换:upper()、lower()
6)替换字符串:replae(‘fsfsfsf’,fs”,’ab’)
7)把字符串中某几个连续字符替换成指定字符:overlay(‘freda’ placing ‘fsf’ from 2 for 4)
8)按照某个字符拆分字符串:split_part(‘adas|dada|ffr’,’|’,2)
9)手动数据:select * from (values (‘a1’,3),(‘a2’,4)) t(col,num)
10)指定字符串在字符串中的起始位置:position(‘as’ in ‘dadassa’)

2、时间函数
1)两个日期间时间的“符号化”结果:age(timestamp ‘20171018’)、age(timestamp ‘20171018’,timestamp ‘20171008’)
2)当前日期:current_date
3)当前时间:current_time、current_timestamp
4)获取年、月、日、小时、分钟、秒:date_part(‘year’,timestamp ‘2017-10-19 09:26:24’),date_part(‘month’,timestamp ‘2017-10-19 09:26:24’),date_part(‘week’,timestamp ‘2017-10-19 09:26:24’),date_part(‘day’,timestamp ‘2017-10-19 09:26:24’),date_part(‘hour’,timestamp ‘2017-10-19 09:26:24’),date_part(‘minute’,timestamp ‘2017-10-19 09:26:24’),date_part(‘second’,timestamp ‘2017-10-19 09:26:24’)
5)获取所指粒度的初始时间点:date_trunc(‘year’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘month’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘week’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘day’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘hour’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘minute’,timestamp ‘2017-10-19 09:26:24’),date_trunc(‘second’,timestamp ‘2017-10-19 09:26:24’)
6)作用同4)date_part:extract(year from timestamp ‘2017-10-19 09:26:24’)
7)作用同3)current_timestamp:now()
8)字符串到日期的转换:date(‘20171018’)、date ‘20171018’、’20171018’::date、’20171018’::timestamp、timestamp(‘20171018’)、timestamp ‘20171018’
9)日期、时间加减:select date(‘20171018’) -18、date(date(‘20171018’) - interval’18 days’)、date(‘20171018’) - interval ‘1 days 2 hours 20 minutes 30 seconds’

3、数值计算函数
1)绝对值:abs(-12)
2)不小于参数的最小整数:ceil(-42.8)、ceiling(-42.8)———— -42
3)保留几位小数:round(43.545345,2)
4)0.0到1.0之间的随机数:random()
5)截取指定位数小数:trunc(43.545,2)

4、其他常用函数
1)序号生成函数:generate_series(6,10,1)–默认间隔是1
2)列转行:select num,string_agg(col,’,’ order by num) from (values(1,’a1’),(1,’a2’),(2,’b1’),(2,’b2’)) t(num,col) group by num;
3)行转列:select regexp_split_to_table(col,’,’) from (values(‘a2,a1’)) t(col)
4)hash函数:md5(‘fsfds’)、hashbpchar(‘fsfds’)

5、分析函数
1)窗口函数:

6、查询字符集
show client_coding;
show server_coding;

7、类型转换
1)to_char(now(), ‘YYYYMMDDHH24MISS’) =>20160720155848获取一个日期的年月日小时分钟秒字符串类型
2)to_date(now(), ‘YYYYMMDD’) =>20160720155848获取一个日期的年月日小时分钟秒日期类型
3)to_number(now(),’9999999999’)=>20160702获取一个日期的年月日数值类型
4)to_number(now(),’9999999999999999999’)=>20160720155848获取一个日期的年月日小时分钟秒数值类型
5)将字符串或日期型转换成数值型 cast(‘21313’ as int)

历史拉链:
—-分区表:按失效时间分区存储数据
—-增量数据表:存储每天新增、更新、删除的数据
—-临时表1(分区表):分区表未失效数据跟增量数据表关联,得到历史数据及当前未失效数据
—-临时表2:先跟临时表1里面的当前未失效数据分区进行交换,载跟分区表昨日分区进行交换
然后在跟临时表1的历史数据分区进行交换,再跟分区表的未失效数据分区交换

分区表字段:生效时间、失效时间、类型(历史数据、当前数据)、数据操作类型(I、D、U)、数据仓库插入日期
增量表字段:类型(历史数据、当前数据)、数据操作类型(I、D、U)
临时表1:同分区表字段
临时表2:同分区表字段

日志分析:
—-日志表:存放日志数据

日志表字段:浏览时间、浏览的cookie_id(用户唯一标识)、浏览页面的url、用户ip、来源的url,这里只保留域名

影响查询速度的因素:数据分布(均匀分布的时候,压力分散到各个节点,速度相对较快,压力相对较小;数据倾斜的时候,倾斜的主机压力大)
                    压缩表(压缩表速度较快,IO相对较小)create table tmp with(appendonly=true,compresslevel=5) as select * from mm distributed by (flag);
                    索引(B-tree、bitmap、函数索引)

猜你喜欢

转载自blog.csdn.net/qq_22994783/article/details/81871952