我正在 Teradata 中设计一个大约有 30 列的表。这些列将需要存储多个时间间隔样式的值,例如 Daily、Monthly、Weekly 等。将实际字符串值存储在表中是一种糟糕的设计,因为这会导致严重的数据重复。相反,我想做的是创建一个原始查找表。该表将保存 Daily、Monthly、Weekly,并将使用 Teradata 的标识列来派生主键。这个主键然后将存储在我创建的表中作为外键。
该表将设计如下:
ID 类型值 --- ------------ ------------ 每天 1 次间隔 2 间隔每月 3 间隔每周 4 时间帧 24x7 5 时间帧 8x5
这对我的应用程序很有效,因为我需要知道的只是填充 Web 表单下拉列表时的原始键值。但是,我们使用的其他应用程序需要运行报告或通过提要接收这些数据。因此,需要创建一个视图,将这个表连接到基元表,以便它可以实际返回 Daily、Monthly 和 Weekly。
我关心的是性能。
我从未创建过包含如此大量外键字段的表,并且对 Teradata 还相当陌生。在我走上漫长的道路以艰难的方式弄清楚这一切之前,我希望获得任何建议,以实现我的目标的最佳方式。
我发现我的数据库,特别是USERS表空间的大小急剧增加。
我如何才能找到对位于此表空间中的对象执行的 DML 操作?
我不是数据库管理员——只是一个软件工程师。我想知道是否可以减少以下 T-SQL 查询:
SELECT
SUM(Price * Quantity) as 'Total',
SUM(Price * Quantity) * 0.95,
FROM
SomeTables;
Run Code Online (Sandbox Code Playgroud)
对于这样的事情:
SELECT
SUM(Price * Quantity) as 'Total',
'Total' * 0.95,
FROM
SomeTables;
Run Code Online (Sandbox Code Playgroud)
注意:这只是澄清/支持我的问题的示例。我当前的 SQL 查询比这更大更复杂。
SYSTEM由于SYS.AUD$表,我们的表空间增长失控。
我们已经截断了,SYS.AUD$但数据文件仍然很大(~30G)。
调整大小不起作用,因为文件包含超出请求RESIZE值的已用数据
我应该在这里做什么?
这是我们的版本信息:
我正在尝试优化以下语句:
'VI'+CAST(month(GETDATE()) AS NVARCHAR)+'/'+CAST(year(GETDATE()) AS NVARCHAR)
+'/00000' +CAST(@number+1 AS VARCHAR)
Run Code Online (Sandbox Code Playgroud)
该语句产生的值等VI1/2011/000002,如果该@number参数1。
我想在删除多余的强制转换语句和提供连接字符串和整数的有效方法方面对此进行优化。
假设我从以下查询中得到一个结果集:
select *
from sys.database_files;
Run Code Online (Sandbox Code Playgroud)
对于任何给定的结果集,我希望能够查询列名和类型,以便我可以创建表来存储结果。
在 T-SQL 中执行此操作的好方法是什么?
使用Oracle Failsafe,如何在nomount模式下启动实例?
如果实例通过 sqlplus 关闭,Windows 集群管理器只会再次启动它。如果实例通过 Windows 集群管理器关闭,我将无法通过 sqlplus 连接到它。
问题是我有两个相同的数据库,一个在我的笔记本电脑的本地主机服务器上,另一个在办公室的主服务器上。是否有任何自动方式或软件可以同步这两个相同数据库之间的数据?我正在使用 SQL Server 2008 R2。
什么时候应该重建索引?vs 重组?
什么索引碎片值被认为是健康的?
发生以下错误的典型情况是什么,这意味着什么?
另请注意,当查询失败时,我发现自己与服务器断开了连接(但我自己没有观察到这一点)。
Location: "xact.cpp":4253
Expression: !m_parNestedXactCnt
SPID: 56
Process ID: 2208
Description: Trying to use the transaction while there are 1 parallel nested xacts outstanding
Location: "xact.cpp":4362
Expression: !m_parNestedXactCnt
SPID: 56
Process ID: 2208
Description: Trying to use the transaction while there are 1 parallel nested xacts outstanding
Msg 3624, Level 20, State 1, Line 131
A system assertion check has failed. Check the SQL Server error log for details. Typically, an assertion failure is caused by a software bug …Run Code Online (Sandbox Code Playgroud) sql-server ×5
oracle ×3
aggregate ×1
datafile ×1
foreign-key ×1
index ×1
maintenance ×1
metadata ×1
mirroring ×1
parallelism ×1
performance ×1
primary-key ×1
query ×1
replication ×1
shrink ×1
syntax ×1
t-sql ×1
teradata ×1
windows ×1