【发布时间】:2016-02-27 00:39:34
【问题描述】:
假设我有一个表格“arrivals”,它记录了物品到达某个位置的时间。每行对应一个到达事件。
arrivals
========
LocationId ItemId TimeStamp
------------------------------------------
a 1 2015-11-24 11:00 (item 1 arrived at 11:00 at location a)
a 2 2015-11-24 11:01 (item 2 arrived at 11:00 at location a)
b 1 2015-11-24 11:05 (item 1 left location a and arrived at b)
b 2 2015-11-24 11:06 (item 2 left location a and arrived at b)
是否有一条 SQL 语句可以告诉我 11:03 在位置 A 哪些项目在哪里,可能不会让 SQL 服务器崩溃?
(这将包括在 11:03 之前到达位置 A 并且此后未到达其他任何地方的所有物品)
每个地点通常同时有大约 30 件物品,100 个不同地点,每个地点每小时大约有 1000 人次到达。
是否有任何设计选择可以简化此类查询,即使这意味着对数据库进行非规范化?
目前我什至无法想象一个 sql 命令可以让我获得这些信息,而无需在自定义循环中遍历整个表。
【问题讨论】:
-
所以物品在位置之间以光速移动?因为我没有看到任何表明物品是从位置 A 发货的
-
位置彼此相邻,例如位置“conveyor_1”直接通向位置“conveyor_2”,中间没有空格。
标签: sql database select database-design sql-server-2012