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