【发布时间】:2019-11-02 04:27:07
【问题描述】:
我的表有 2000 万条记录。我的表包含两个字段(empno,ename)。 empno 列包含值,但某些 ename 列不包含值。所以我正在尝试使用下面的块更新 ename 列。我为 empno 列创建了索引,但这下面的块运行超过 10 小时(未完成)
create table index_test(empno integer,ename varchar(50))
create index ix_index_test on index_test(empno,ename)
DO $$
<<first_block>>
DECLARE
X RECORD;
BEGIN
FOR X IN(SELECT EMPNO FROM INDEX_TEST)
LOOP
UPDATE INDEX_TEST SET ENAME='Raja'||x.empno where empno=x.empno AND ENAME IS NULL;
END LOOP;
END first_block $$;
样本数据
Empno ENAME
15346070 Raja15346070
14208203
15392731
17419579
13287096
【问题讨论】:
-
索引创建有问题吗?
-
索引无济于事 - 问题是您通过循环执行的逐行处理效率低下且缓慢。
-
请注意,Postgres 9.1 是no longer supported,您应该尽快计划升级。
标签: postgresql sql-update postgresql-9.1 query-performance