在我们的 SQL Server 上,我们为每个 Web 应用程序都有一个数据库。对于报表,我们使用 Reporting Services,所有报表数据(包括报表参数)都来自存储过程。
存储过程与报表中的数据位于同一数据库中。因此,例如,服务于 Stock 报告的 proc 位于 Stock 数据库中。一些报告显示来自多个数据库的信息,然后 proc 将位于这些源数据库之一中。报告参数从具有商店、员工等数据的企业数据库中的 procs 获取数据。
这意味着所有报告都至少有一个到 Enterprise 数据库的连接和另一个到另一个数据库的连接——有时甚至更多。
我的问题是:将报告过程移动到单独的“报告”数据库中是否有好处。我知道将报告移动到另一台服务器上的好处,我不是在谈论那个——这将在同一台服务器上。
可能影响这一点的事情是:
请让我知道你的想法。
当我运行此删除时:
DELETE FROM ETLHeaders WHERE ETLHeaderID < 32465870
Run Code Online (Sandbox Code Playgroud)
...它删除了 39,157 行。它应该很简单,因为它是在 ETLHeaderID 上删除的,它是聚集索引和主键。但是(根据执行计划)它似乎达到了 361,190 行并使用了其他索引。该表确实有一个具有 XML 数据类型的字段(以防影响此 DELETE)。
任何想法为什么以及如何加速此 DELETE?
此处的执行计划: http ://sharetext.org/qwDY 此处的表架构:http : //sharetext.org/Vl9j
谢谢
performance sql-server-2008 execution-plan query-performance
我正在构建一个管理 POS 系统定义的数据库(菜单项、收银员等)。它将包括许多商店和许多版本。
因此,典型的表将如下所示(MenuItems 表)...
StoreID PK
VersionID PK
MenuItemID PK
MenuItemName
Run Code Online (Sandbox Code Playgroud)
但我想将 StoreID 和 VersionID 合并为一个代表商店和版本的 ID(因此,商店 101 的版本 5)。所以,我简化了每个表上的主键(因为每个表都需要这个)
然后让我的桌子看起来像这样......
SomethingID PK
MenuItemID PK
MenuItemName
Run Code Online (Sandbox Code Playgroud)
请帮我命名 StoreIDAndVersionID 字段。我不知道该怎么称呼它。