我已将数据导入新数据库(大约 600m 行时间戳、整数、双精度)。然后我创建了一些索引并试图改变一些列(有一些空间不足的问题),数据库被清空了。
现在 pgAdmin III 告诉我“临时文件的大小”是 50G~+。
在Windows 2012 服务器上使用Posgres 9.4.1 。
数据库统计选项卡的屏幕截图:
我有一个使用 PostgreSQL 表的应用程序。该表非常大(数十亿行)并且有一列是整数。
该integer可高达6个位数,即0-999,999,没有底片。
我想把它改成numeric(6,0).
这是个好主意吗?会numeric(6,0)占用更少的字节吗?性能怎么样(这个表被查询了很多)?
我是一名程序员,正在处理一个大表,其方案如下:
UpdateTime, PK, datetime, notnull
Name, PK, char(14), notnull
TheData, float
Run Code Online (Sandbox Code Playgroud)
有一个聚集索引 Name, UpdateTime
我想知道什么应该更快:
SELECT MAX(UpdateTime)
FROM [MyTable]
Run Code Online (Sandbox Code Playgroud)
或者
SELECT MAX([UpdateTime]) AS value
from
(
SELECT [UpdateTime]
FROM [MyTable]
group by [UpdateTime]
) as t
Run Code Online (Sandbox Code Playgroud)
对该表的插入以具有相同日期的 50,000 行的块为单位。所以我认为分组可能会简化MAX计算。
而不是试图找到最多 150,000 行,按 3 行分组,然后计算MAX会更快?我的假设是否正确或 group by 也很昂贵?
ALTER INDEX [myIndex] ON [dbo].[myTable] REORGANIZE WITH ( LOB_COMPACTION = ON )
Run Code Online (Sandbox Code Playgroud)
我有上面的查询运行了 16 天(仍在运行),该表是用于基准测试的虚拟表,它有超过 100 亿行。(大约 1 TB 的数据包括myIndex(非集群))。
我知道有进步,因为当我查询碎片时,我看到数量减少了。
如果我取消/停止执行ALTER INDEX,我可以稍后安全地恢复它,还是会导致回滚?
它会回滚只是交换的最后一页还是整个操作?
我有几个具有不同列数的表,每个表都可以是real或int,两者都not null可以(如果需要,我可以将它们全部定义为真实的)。
我想编写一个插入全零行的查询。
INSERT [TablesName] DEFAULT VALUES 适用于可为空的列。
我无法使用,INSERT INTO table1 (field1, field2) VALUES (0, 0.0);因为我不知道列数。
是否有查询会为非空表插入具有默认值的新行?
我有一张大表,大约有 750M 行。
我有一个Entity Framework用于加载和解析数据的应用程序,返回 200 万行的查询需要 4 秒。
使用SQL Server Management Studio.
我注意到其他查询会发生这种情况(所有查询都返回大型数据集)。两个连接都使用TCP/IP.
当包含客户端统计信息时,我看到这一行(不知道是什么意思):
客户端处理时间 2539 2539.0000
为什么SSMS查询会变慢?