我的表上有 100 多个索引。我想临时禁用所有索引,并希望在索引完成后重新启用它们。
键入每个索引名称来禁用它是不可行的。是否有任何 PostgreSQL 语句可以临时禁用所有索引,然后再次重新启用它们。
问候,
我正在将数据插入临时表并且它工作正常。下面是相同的 psedo sql 代码
with cte as(
)
select *
into temp_table
from cte
Run Code Online (Sandbox Code Playgroud)
使用这种方法,数据可以非常快地插入临时表中。根据我的知识,一旦会话关闭,临时表就会被删除。但是即使关闭了我的 pgadmin 连接,我的临时表也不会被删除。
我的问题是 postgresql 中的临时表是自动删除还是保留在磁盘空间上,直到我们删除它们。
问候,
桑杰·萨伦赫
以下是同一事物的两种不同语法。
带有COPY TABLE AS SELECT( CTAS)。
CREATE TABLE main
AS
SELECT *
FROM other;
Run Code Online (Sandbox Code Playgroud)作为单独的语句CREATE TABLE和INSERT INTO
CREATE TABLE main (like other);
INSERT INTO main
SELECT *
FROM other;
Run Code Online (Sandbox Code Playgroud)我观察到的CTAS比明显快CREATE TABLE.. INSERT。第一个需要 20 秒才能完成执行。第二个语法二需要 1 分 15 秒才能完成执行。
差异的原因可能是什么?
为了更快地进行更新,我正在使用:
ALTER TABLE imagingresourceplanning.opnav_fact_revenue_costs SET UNLOGGED ;
Run Code Online (Sandbox Code Playgroud)
这个命令的缺点是什么?
如果系统在更新期间崩溃会发生什么?表中的所有数据都被删除了吗?或者只有正在进行的更新会丢失?