目前,我看到当我在DynamoDB中使用版本控制时,它会更改版本号,但新条目将替换旧条目; 即:
旧
{ object:one, name:"hey", version:1}
Run Code Online (Sandbox Code Playgroud)
新
{ object:one, name:"ho", version:2}
Run Code Online (Sandbox Code Playgroud)
我想要的是在数据库中有两个条目; 即:
旧
{ object:one, name:"hey", version:1 }
Run Code Online (Sandbox Code Playgroud)
新
{ object:one, name:"hey", version:1}
{ object:one, name:"ho", version:2}
Run Code Online (Sandbox Code Playgroud)
有没有办法实现这个目标?
这个问题不是关于处决的顺序.这只是关于ORDER BY.
在标准执行中是:
编辑:这个问题或多或少是" SQL Server在执行ORDER BY表达式时是否应用短路评估? "的问题.答案是有时候的!我还没有找到合理的理由来解释原因.请参见编辑#4.
现在假设我有这样的声明:
DECLARE @dt18YearsAgo AS DATETIME = DATEADD(YEAR,-18,GETDATE());
SELECT
Customers.Name
FROM
Customers
WHERE
Customers.DateOfBirth > @dt18YearsAgo
ORDER BY
Contacts.LastName ASC, --STATEMENT1
Contacts.FirstName ASC, --STATEMENT2
(
SELECT
MAX(PurchaseDateTime)
FROM
Purchases
WHERE
Purchases.CustomerID = Customers.CustomerID
) DESC --STATEMENT3
Run Code Online (Sandbox Code Playgroud)
这不是我试图执行的真实陈述,而只是一个例子.有三个ORDER BY语句.第三个语句仅用于姓氏和名字匹配的罕见情况.
如果没有重复的姓氏,SQL Server是否不执行ORDER BY语句#2和#3?而且,从逻辑上讲,如果没有重复的姓氏和名字,SQL Server会注意执行语句#3.
这真的是为了优化.从购买表中读取应该只是最后的手段.对于我的应用程序,从"CustomerID"分组的"Purchases"读取每个"PurchaseDateTime"效率不高.
请保留与我的问题相关的答案,而不是像购买中的CustomerID,PurchaseDateTime构建索引的建议.真正的问题是,SQL Server是否会跳过不必要的ORDER BY语句?
编辑:显然,只要有一行,SQL Server将始终执行每个语句.即使有一行,这也会给你一个除零误差:
DECLARE @dt18YearsAgo AS DATETIME = DATEADD(YEAR,-18,GETDATE());
SELECT
Customers.Name
FROM
Customers
WHERE
Customers.DateOfBirth > @dt18YearsAgo
ORDER BY
Contacts.LastName ASC, …Run Code Online (Sandbox Code Playgroud)