我有一个包含超过 5000 万行的表。
当我添加一列时:
ALTER TABLE my_table ADD my_column NUMBER;
它非常快。
在添加列之后,我将其删除。
ALTER TABLE my_table DROP COLUMN my_column;
需要3分钟!
为什么添加列如此之快,而在不填充的情况下删除它却很慢?
我有一个包含超过 5000 万行的表。
当我添加一列时:
ALTER TABLE my_table ADD my_column NUMBER;
它非常快。
在添加列之后,我将其删除。
ALTER TABLE my_table DROP COLUMN my_column;
需要3分钟!
为什么添加列如此之快,而在不填充的情况下删除它却很慢?
当您使用 SQLplus 登录 Oracle 数据库时,它会在当前目录中查找 login.sql 文件。如果文件存在,则执行。
设置首选项很有用...
当我使用 psql 登录到 PostgreSQL 数据库时,是否有等效项?
我在函数中有调试消息。这些信息被提出来
RAISE NOTICE 'Value of id : %', id;
我将我的日志文件设置为\o messages.txt
然后我做我需要做的事情\i process.sql
而当执行终止时,\o
.
问题是我没有将通知引发的消息放入messages.txt。消息显示在屏幕上,但我希望将它们写入messages.txt
我怎么能那样做?
我尝试使用RAISE LOG...
并将消息写入日志文件中......这不是我想要的。
我有一个解决办法
plsql -f /path/to/process.sql > messages.txt 2>&1
但我想知道如何在 plsql 客户端上使用 \i 和 \o 将消息放入 \o 中指定的文件中
我的客户端,在 cygwin 上是 psql (PostgreSQL) 8.2.11,服务器版本是 9.0.7
我在全屏模式下使用 cygwin 远程连接到我的数据库服务器。
当我查询我的数据库时
select id, name from table limit 27;
我得到 27 条记录,我可以做一个新的查询来查看上一个查询的结果。
但是,如果我将 27 替换为 28,我会在一个屏幕上看到 28 条记录,并且显示(End)
为反向视频。如果我想做一个新的查询,我必须按q
。
即使我使用我的 cygwin 窗口的滚动条,我也看不到前面查询的结果。
我必须修改哪个选项才能增加此缓冲区?
我的 psql 客户端和数据库服务器版本是 9.1.4,它们安装在 Ubuntu 12.04 上