我想知道是否有办法在 PL/pgSQL 中声明表类型的变量来保存查询结果?例如,我如何表达如下内容:
q1 = select * from foo;
q2 = select * from bar;
for t1 in q1:
for t2 in q2:
-- do something with t1 and t2
Run Code Online (Sandbox Code Playgroud)
我查看了 return next 构造,但它似乎只能处理返回值。
我有这个查询:
UPDATE (
SELECT h.valid_through_dt, h.LAST_UPDATE_TMSTMP
FROM ETL_FEE_SCH_TMP d, FEE_SCHEDULE_HISTORICAL h
WHERE h.FUND_ID = d.FUND_ID
AND h.FEETYPE_NAME = d.FEETYPE_NAME
AND h.BREAKPOINT_TYPE = d.BREAKPOINT_TYPE
AND h.BREAKPOINT_QTY = d.BREAKPOINT_QTY
AND h.LOW_BREAKPOINT_AMT = d.LOW_BREAKPOINT_AMT
AND h.VALID_THROUGH = TO_DATE ('31-DEC-9999', 'dd-mon-yyyy')
AND h.universe = 'DC'
AND h.universe = d.universe
AND EXISTS
(
SELECT 1
FROM FEE_SCHEDULE s
WHERE s.FUND_ID = h.FUND_ID
AND s.FEETYPE_NAME = h.FEETYPE_NAME
AND s.BREAKPOINT_TYPE = h.BREAKPOINT_TYPE
AND s.BREAKPOINT_QTY = h.BREAKPOINT_QTY
AND s.LOW_BREAKPOINT_AMT = h.LOW_BREAKPOINT_AMT
AND s.universe = 'DC'
)
) updateTable …
Run Code Online (Sandbox Code Playgroud) 我们有一个合并复制环境,它正在推送到 8 个订阅者。这工作正常。我们的分发数据库设置为简单恢复模式。我们有一个维护计划,将在每天 00:30 备份所有数据库。此过程完成后,分发日志文件会在接下来的 30 分钟内增长并吸收硬盘驱动器上的所有剩余空间(约 90GB)
然后发生的情况是分发数据库显示为“Recovery Pending”,在重新启动机器之前我们无法做任何事情。在此之后,我可以将日志文件缩小到 2MB。
我不知道为什么会这样。日志文件在白天以大约 10MB 的速度运行。数据库大小为 15GB。
有没有人看到-E
使用 SSD 时效果的证据?
对“旋转生锈”驱动器的影响是没有争议的——但 SSD 并没有真正被随机 I/O 所困扰。我想知道该-E
选项是否会损害性能。
在混合驱动器(SSD SAN、PCI SSD 和传统 SAN)的服务器上,SQL Server 必须在启动时决定是否使用-E
。我有一些经验证据表明该选项可能对性能有害,但在我考虑取消它之前,我希望其他人的反馈。
我的设置使用标准的 64K RAID 条带,NTFS 簇大小也是 64K。
我正在使用 mongodb 来持久化一个非常大的(90G),它有近 40,000,000 个项目。我读取并解析这个文件并将所有项目插入到 mongodb(我的编程语言是 perl,batch_insert,我将一个项目映射到一个 mongodb 文档)。
在插入之前,我已经预先创建了索引(大约 10 个索引键)。我发现插入速度不能满足我的需要(每秒 200 到 400 个项目)。我知道太多的索引键肯定会减慢我的插入速度,尤其是当集合的大小变得很大时。所以我想知道我是否可以在将所有数据转储到 db 后索引它们。
谁能告诉我这种方式是否可用,是否绝对可以节省我的时间?
好的,完全是新手问题。
究竟什么是“Oracle 上的 SAP”。 这个链接谈论的是 SAP 如何在 Oracle 上运行(我认为)。
我不明白这是如何工作的。
我的理解:
SAP是一家提供ERP的公司
Oracle 是一个数据库系统。
我以为他们是竞争对手!那么,SAP on Oracle 是否在 Oracle 上运行 ERP 系统?这里运行的是什么,在这种情况下 DBA 会支持什么?(或者这甚至是 DBA 领域?)
我这么问是因为我申请了一份更喜欢“SAP”经验的工作,我在谷歌搜索中遇到了这个“SAP on Oracle”。
在标准 MySQL 数据库上使用一些代码,我遇到了以下语句:
SELECT * FROM foo LEFT JOIN bar USING ('bar_id') WHERE foo_id = 1
Run Code Online (Sandbox Code Playgroud)
让我困惑的是:USING
它是为了什么,它有什么作用?
我的第一个假设是它涉及使用外键或可能的索引,但 DB 模式没有任何外键或索引的指示,期间。
我的 googlefu 使我失败了,可能是因为USING
在网站上的大多数文本中都是如此常见的词。因此,我想知道在我修改此代码和此代码中的多个其他查询之前,DB 专家听到的是否可以阐明它的作用。
我在 OS X 10.8.3 上,我已经从 macports 安装了 PostgreSQL,但我意识到我的系统驱动器上没有足够的空间用于我将要填充数据的数据库。
有没有办法在另一个驱动器/分区(不是系统,安装 postgres 的地方)上创建新数据库?
我怎样才能做到这一点?
我必须更新一个大表的某些值(为了一个假定的例子,它被称为“资源”,它超过 500 万行),因此我必须在执行更改之前进行备份。我们没有足够的数据库可用空间来存储完整的备份表。
哪种方法最好?有没有办法通过块来做到这一点?我的意思是:备份原始表中的前 100K 行,更新原始表中的那 100K 行,从备份表中删除那 100K 行,备份原始表中的以下 100K 行,然后进行类似的操作. 这可行吗?
客户端似乎有一些 SQL Server 蔓延,我想记录所有这些。
在网络上查找所有已安装 SQL Server 版本的最佳方法是什么?