【问题标题】:SQL - Better Performance vith a ViewSQL - 通过视图获得更好的性能
【发布时间】:2016-06-07 21:47:22
【问题描述】:

我在 SQL Server 2014 上运行,并且有一个与带有订单的表相关的 Customer 表。 Order 表有例如 500.000 行 - 100.000 为 5 个客户中的每一个。因此,在为特定客户查找特定日期的所有订单时,SQL 将是

Select * 
from Orders 
Where idCustomer = 1 
  and OrderDate = '20160225'

此查询应查看 500.000 条记录以查找相关订单。

创建 5 个视图,为每个客户创建一个视图,然后查询该视图是否会更好:

Select *
from View_Orders_Customer1 
Where OrderDate = '20160225'

或者我必须创建 5 个表 Order_Customer1Order_Customer2 等 - 而不是??

【问题讨论】:

  • 视图(标准视图)和多个表都不能解决您的问题。一两个索引可以极大地提高性能,但它很大,但这取决于数据更新(或添加或删除)的频率。如果它是一个测试/开发数据库,​​那么看看索引。如果它是一个生产数据库,那么要小心,索引可以加快选择,但它们会减慢更新/插入/删除。
  • 既不是这个也不是那个。您只需在 Orders 表上创建一个索引,该索引将由 idCustomer 列和 OrderDate 列组成。
  • 常规 views 不做任何事情 - 它们已完全扩展,view 的源代码成为外部查询的一部分。就像根本没有view

标签: sql sql-server performance sql-server-2008 views


【解决方案1】:

我不建议为每个客户创建视图.. 但您可以在表中添加索引http://www.w3schools.com/sql/sql_create_index.asp

您还可以在视图上添加索引以提高您的选择性能 https://technet.microsoft.com/en-us/library/ms187864(v=sql.105).aspx

我的表包含超过 700,000 条记录,在表和视图中应用索引对我很有帮助

【讨论】:

  • @henjensen 如果我的回答解决了您的问题,请将其标记为已解决,以便其他人可以使用它......谢谢
【解决方案2】:

对于相同的数据模型,使用相同的表。多个表或视图不是好的设计,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-07
    • 2011-10-20
    • 2021-04-17
    • 2015-01-08
    • 1970-01-01
    • 2013-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多