查询表或视图的效率更高?

时间:2014-06-11 18:43:43

标签: sql database performance view database-table

我仍然试图完全了解视图的工作方式以及何时最好使用视图直接查询表。这是我的情景:

  1. 所有基础数​​据都存储在一个存储三个月数据的表中
  2. 该表格包含四列:' TagName','警报''时间戳'和'价值&#39 ;; '标签名'和'时间戳'已编入索引
  3. 此表格的视图(不涉及其他表格)显示了一周的数据并结合了“警报”。和'价值'分成一栏。
  4. 此方案中使用的数据库是SQL Server。
  5. 我只需要检索5到30分钟的数据。针对结合了“警报”的基础表编写查询更有效率。和'价值'到一个列(如视图)并动态设置时间范围,或通过传入时间范围查询现有视图?对我来说,前者似乎是要走的路,因为后者基本上需要两个查询。此外,在第二种情况下,第一查询(即视图)会将不必要数量的值加载到存储器中。

2 个答案:

答案 0 :(得分:1)

如果单个表中的数据不是很大,那么查询表将比首先创建视图并查询所需数据更快,因为它将避免一步。

如果数据不多并且where子句中的列被正确编入索引,那么通常查询应该直接转到表(在大多数情况下更快)。

当您在单个表中包含非常大的数据并且需要非常频繁地操作小型子集时,应使用视图。在这种情况下,视图将仅获取所需的数据一次并将起作用,因此这将有助于最大限度地减少重新执行搜索查询的时间(在单个表或连接上)

在达成解决方案之前,请验证/了解您的数据,要求并使用这两种方法进行单次运行并比较时间(我认为桌面上的查询应该是赢家),然后做出决定。

希望这有帮助。

答案 1 :(得分:0)

通常,您应该使用视图尽可能简化查询。这使您的应用程序管理更简单,并且还可以帮助您避免重复查询逻辑(连接和WHERE子句)。但是,视图可能不适合特定查询,这会导致性能下降,因为它们可能会导致特定查询中不需要的不必要操作。视图在引入不必要的复杂性时被滥用。