摘要:
开始VARIDIC,可以使用变参。例子:postgres=# CREATE or replace FUNCTION gao_concat(VARIADIC param_args text[]) RETURNS text AS$$ SELECT array_to_string($1,'*');$$LANGUAGE SQL;CREATE FUNCTIONpostgres=# postgres=# SELECT gao_concat('My', 'dog', 'likes', 'chocolate') As result 阅读全文
摘要:
开始 生成数组下标值: 再看一个 postgresql 的官方例子: http://www.postgresql.org/docs/8.4/static/xfunc-sql.html 对其中的 SELECT min($1[i]) FROM generate_subscripts($1, 1) g(i 阅读全文
摘要:
开始用 第二个参数连接数组元素,例:postgres=# select array_to_string (ARRAY[1,2,3],'##'); array_to_string ----------------- 1##2##3(1 row)postgres=# 结束 阅读全文
摘要:
磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页[作者:高健@博客园 mail:luckyjackgao@gmail.com]select chr(int4(random()*26)+65);postgres=# select chr(int4(random()*26)+65); chr ----- N(1 row)postgres=# select chr(int4(random()*26)+65); chr ----- Y(1 row)postgres=# select chr(int4(... 阅读全文
摘要:
磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页 回到顶级页面:PostgreSQL索引页[作者:高健@博客园 mail:luckyjackgao@gmail.com]根据向网络牛人发问整理得到: random_page_cost = 4 seq_page_cost = 1 cpu_tuple_cost =0.01 cpu_index_tuple_cost =0.005 cpu_operator_cost =0.0025postgres=# select relpages, reltup... 阅读全文
摘要:
开始伪代码如下:for (i = 0; i < length(outer); i++) for (j = 0; j < length(inner); j++) if (outer[i] == inner[j]) output(outer[i], inner[j]);就是个双层循环。实际运行一下:建表:postgres=# CREATE TEMPORARY TABLE sample1 (id, junk) ASpostgres-# SELECT oid, repeat('x',250)postgres-# FROM pg_procpostgres-# ORDER BY 阅读全文
摘要:
PL/SQL 开发的时候,很多时候我们手头没有跟踪调试的工具。这是要想调试该如何处理呢?可以考虑:把代码片段分割成足够小的单位。再把这些片段复制到各个小的函数里。用一个pl/sql 函数或存储过程,全面 调用各个小的函数单位。可以方便地得到结果。达到类似 自动化 unit 测试的效果。 阅读全文
摘要:
开始参考momjian 的文章:http://momjian.us/main/writings/pgsql/optimizer.pdf首先,构造一个数据分布明显倾斜的表(有的值占据了70%以上的分布)postgres=# CREATE TEMPORARY TABLE sample (letter, junk) ASpostgres-# SELECT substring(relname, 1, 1), repeat('x', 250)postgres-# FROM pg_classpostgres-# ORDER BY random();SELECT 291postgres=# 阅读全文