小编Sho*_*use的帖子

如何在不替换DynamoDB中的先前记录的情况下实现版本控制?

目前,我看到当我在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)

有没有办法实现这个目标?

amazon-dynamodb

16
推荐指数
4
解决办法
9898
查看次数

在SQL中执行order by子句

这个问题不是关于处决的顺序.这只是关于ORDER BY.

在标准执行中是:

  • 哪里
  • 通过...分组
  • HAVING
  • 选择
  • 订购
  • 最佳

编辑:这个问题或多或少是" 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)

sql sql-server sql-order-by

5
推荐指数
1
解决办法
940
查看次数

标签 统计

amazon-dynamodb ×1

sql ×1

sql-order-by ×1

sql-server ×1