有没有办法动态使用变量名,我的意思是将其组成一个字符串,然后使用它。
请不要告诉我使用数组,我展示的示例只是为了更好的图片而进行的简化。
do $$
declare
var1 int:=1;
var2 int:=2;
var3 int:=3;
i int;
begin
raise notice 'Variable x %' , var1;
raise notice 'Variable x %' , var2;
raise notice 'Variable x %' , var3;
for i in 1..3 loop raise
notice 'Variable x %' , 'var' || i;
end loop;
end
$$
Result
NOTICE: Variable x 1
NOTICE: Variable x 2
NOTICE: Variable x 3
NOTICE: Variable x var1
NOTICE: Variable x var2
NOTICE: Variable x var3
Run Code Online (Sandbox Code Playgroud)
所以我需要这样的东西,除了结果应该是数字而不是字符串,Variable …
我已经“谷歌搜索”了至少一个小时,但我无法找到如何在 PostgreSQL 中创建位图索引,所以我的问题很简单:如何在 PostgreSQL 中编写这个命令(来自 Oracle):
CREATE BITMAP INDEX name ON table (column);
Run Code Online (Sandbox Code Playgroud) 我有一个简单的查询
select bod_vykonu_kod, count(1)
from cdc_s5_zdroj
group by 1
order by 1 desc;
Run Code Online (Sandbox Code Playgroud)
它应该像它应该的那样并行运行。
解释分析: https: //explain.depesz.com/s/auVt
然后,如果我将相同的查询放入函数中,它就不会并行运行。我尝试了STABLE或VOLATILE,但仍然没有相似之处。我还添加了PARALLEL SAFE但没有区别。
CREATE OR REPLACE FUNCTION
test_par ()
returns table (
t_column1 bigint,
t_column2 bigint
)
volatile
PARALLEL SAFE
AS $dbvis$
BEGIN
RETURN QUERY
select bod_vykonu_kod, count(1)
from cdc_s5_zdroj
group by 1
order by 1 desc;
END;
$dbvis$ LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)
解释分析易失性:https://explain.depesz.com/s/glFO
解释分析稳定:https://explain.depesz.com/s/vnXO
Explain analyze stable and parallel safe: https://explain.depesz.com/s/QlKM
x86_64-pc-linux-gnu 上的 PostgreSQL 11.5,由 gcc (GCC) …
我有一个带有 BRIN 索引的大表,如果我使用 limit 进行查询,它会忽略索引并进行序列扫描,如果没有它,它会使用索引(我尝试了几次,结果相同)
explain (analyze,verbose,buffers,timing,costs)
select *
from testj.cdc_s5_gpps_ind
where id_transformace = 1293
limit 100
Limit (cost=0.00..349.26 rows=100 width=207) (actual time=28927.179..28927.214 rows=100 loops=1)
Output: id, date_key_trainjr...
Buffers: shared hit=225 read=1680241
-> Seq Scan on testj.cdc_s5_gpps_ind (cost=0.00..3894204.10 rows=1114998 width=207) (actual time=28927.175..28927.202 rows=100 loops=1)
Output: id, date_key_trainjr...
Filter: (cdc_s5_gpps_ind.id_transformace = 1293)
Rows Removed by Filter: 59204140
Buffers: shared hit=225 read=1680241
Planning Time: 0.149 ms
Execution Time: 28927.255 ms
explain (analyze,verbose,buffers,timing,costs)
select *
from testj.cdc_s5_gpps_ind
where id_transformace = 1293
Bitmap Heap …Run Code Online (Sandbox Code Playgroud) 我正在尝试解决一个一开始看起来很简单但无法找到任何(简单)解决方案的问题
我有一个包含几列的表,我想在由某些列定义的组上创建一个ID
最好在示例中显示三列,并且我想在由col1和col2定义的组上具有ID,这看起来像是窗口函数的工作,但是以某种方式我无法做到这一点
col1 col2 col3 ID
val1 valA x 1
val1 valA y 1
val1 valB y 2
val2 valC z 3
val3 valA v 4
val3 valA r 4
Run Code Online (Sandbox Code Playgroud)