我不确定这是否是题外话。但是,请继续阅读。
我认识的一个人在印度 CBSE 发布的答案中遇到了问题。由于他们的关键挑战表格包含一个引用/证明栏,我们必须找到一些真实的书籍,可以作为我们声明的基础。
我在此附上问题,并请您验证答案,并向我们建议一些书籍/其他方法来证明我们的挑战(她已查看常规教学大纲书籍,但没有找到与此问题相关的确切内容)。
题:
确定具有函数依赖关系的关系方案 R(A, B, C, D, E) 的最小键 F = {A->B, B->C, AC->D}
选项为 A、AE、BE 和 CE
关键显示答案是A,她说实际上是AE。
请帮助我们找到一些证据/方法来挑战密钥。
我正在遍历一个表,试图创建一个动态的 sql 查询。它似乎工作正常,除非我连接结果以制作实际语句。伪代码如下
WHILE (Data is in the table)
BEGIN
SELECT TOP 1 @result = result from table
@sql = @sql + ', ' + @result
END
Run Code Online (Sandbox Code Playgroud)
如果我查看@sql每个循环,我会看到预期的结果,但是当循环完成时@sql是空的。有人可以解释为什么吗?
我使用 SQL Server 2014 Management Studio 创建了完整备份。之后,我将其删除并创建了差异备份,一切正常。如果原始完整备份被删除,服务器如何知道需要进行哪些差异备份?
我需要收缩 SQL Server 2012 中的数据文件。我在数据库任务中使用收缩文件选项,并使用“在释放未使用空间之前重新组织页面”选项。SQL Server 说我可以将文件缩小到 350000 MB 的最小大小。如果我尝试将其缩小到 300000 MB 会发生什么,这会从数据库中删除数据吗?简单来说,如果我缩小文件超过文件的最小大小,它是否会从文件中删除数据?
我刚刚开始使用OPENJSONSQL Server 2016 SP1。
我有这句话:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c
where c.CodeId = a.AggregationId for json path
Run Code Online (Sandbox Code Playgroud)
要生成此 JSON:
select c.Serial as Parent,
(Select co.Serial, agc.Position
from AggregationChildren agc, Aggregation ag, Code co
where agc.AggregationId = a.AggregationId
and co.CodeId = agc.AggregationChildrenId for json path) as children
from Aggregation a, Code c …Run Code Online (Sandbox Code Playgroud) 我在 Microsoft SQL Server 2012 服务器中有一个名为 FinTrans 的表,在任何给定时间都有大约 10K-30K 条记录,每天插入和删除大约 2K 条记录。
该表有 3nvarchar(max)列,用于保存事务的可能错误消息(3 种不同类型的消息,因此是单独的列)。每当列出表的内容时,nvarchar(max)也会读取这些列。列是nvarchar(max)因为它们的内容可能会超过 4K,但是机会很小(也许每周有一个记录)。
在这种情况下,最好将此列存储在与 FinTrans 表具有 1:1 关系的单独表中,还是我应该将列留在原处?
我目前正在更新旧的标量值函数,希望能够提高它们的效率或将它们更改为内联 TVF。
在对我的重写进行故障排除时,我在原始代码中遇到了一些奇怪的问题,根据我对 SQL 中变量的理解,这似乎没有意义
如果我要写
Declare @var as Integer
Select @var = col1 from table
Run Code Online (Sandbox Code Playgroud)
然后这将始终返回 col1 中的最后一项。但是,在我正在使用的功能中,情况似乎并非如此。最初,有一个 where 子句根据输入更改结果,但是,删除它后,上述属性应该保持不变。在大多数情况下,确实如此,但也有一些情况并非如此。
大纲大致类似于以下内容:
create function f (
@var1 ... )
returns datatype
begin
Declare @temp1 ... (several vars declared here)
select @temp1 = col1, @temp2 = col2, ..., @tempX = max(colX) from(
select col1, col2, ... ,
colX * (case when name = 'X' then 1 else 0)
from table1
INNER JOIN table2 on ...
inner join table3 on ...
left …Run Code Online (Sandbox Code Playgroud) 假设每秒有大约 1k 个请求需要插入。
现在,互联网上对此有很多答案……但在这种特定情况下,它们在技术上是错误的。是的,几乎任何 RDBMS 都可以在标准硬件上每秒处理 1k 次插入,但如果且仅当您放弃 ACID 保证时。令人惊讶的是,互联网上有多少可怕的答案。例如“您可以随时扩展 CPU 和 RAM”,这应该可以每秒提供更多插入次数,但这不是它的工作原理。限制因素是磁盘速度或更精确:您实际上可以将多少事务刷新/同步到磁盘。这是棘手的一点。
在体面的“商品硬件”上(除非您投资于高性能 SSD),这就是您可以期待的:
这是您可以在保持 ACID 保证的同时插入的速率。这实质上意味着,如果您有一个每秒 100 个帖子的论坛……您无法通过这样的设置来处理它。
读取请求不是问题。您每秒可以有数千个读取请求,但写入请求通常小于每秒 100 个。
因此,这个问题专门针对如何在保持 ACID 保证的同时处理每秒 1k 次插入 - 假设单个节点每秒可以处理大约 80 个事务。
我可以看到这种工作的一种方法是,如果您在应用程序逻辑中的某处缓冲插入并将它们作为更大的事务提交到数据库(同时让客户端等待事务结束),如果您只需要单个插入,这应该可以正常工作,尽管它很复杂应用逻辑相当多。
我们的数据库中有两个名为“ClientIncome”和“PartnerIncome”的现有列。我们想添加一个名为“HouseholdIncome”的新列
我们想将“ClientIncome”和“PartnerIncome”中的值添加到新的“HouseholdIncome”列中?
这是我们数据库的一个小例子。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Incomes](
[Id] [int] IDENTITY(1,1) NOT NULL,
[ClientIncome] [float] NOT NULL,
[PartnerIncome] [float] NULL,
[HouseholdIncome] [float] NULL
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[Incomes] ON
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (1, 130.77, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (2, 294.82, 339.28, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) VALUES (3, 0, NULL, NULL)
GO
INSERT [dbo].[Incomes] ([Id], [ClientIncome], [PartnerIncome], [HouseholdIncome]) …Run Code Online (Sandbox Code Playgroud) 我有一个名为“mkvtable”的表,它在各个字符串和字符串数组之间建立对应关系:
词| MKV字
------+-----------------
你好 | {世界,朋友}
再见| {家,永远}
你好| {伙计们,女士们}
根据PostgreSQL 提供的文档,将值附加到值数组应该是使用连接运算符“||”的简单问题。
但是,如果我尝试将字符串 , 添加到与单词 对应的there字符串数组中,则似乎不会发生任何情况:{fellas,ladies}hi
SELECT mkvword FROM mkvtable WHERE word = 'hi' || 'there';
Run Code Online (Sandbox Code Playgroud)
PostgresSQL 似乎也说了同样的话:
mkvword
---------
(0 rows)
Run Code Online (Sandbox Code Playgroud)
由于没有抛出任何错误,我认为语法上没有问题。
我究竟做错了什么?我最好的猜测是 psql 感到不安,因为我试图通过使用数组与相邻列中的值的关系来访问数组,但这只是一个未经教育的猜测。也许这种查询与连接运算符不太适合?
TL;DR:如何正确地将值连接到表行中存储的数组?
sql-server ×7
acid ×1
array ×1
backup ×1
blob ×1
functions ×1
json ×1
optimization ×1
performance ×1
postgresql ×1
relations ×1
shrink ×1
subquery ×1
t-sql ×1
transaction ×1