【发布时间】:2018-08-14 21:31:12
【问题描述】:
我有一个简单的 Customer、Setting 和 CustomerSetting 结构。
大约有 60 种设置,都使用 UNIQUEIDENTIFIER 作为键,因为这些设置可以在多个系统之间共享并且可以按任意顺序创建,因此不保证 Id 相同)
每个客户都可以拥有这些设置,但不一定是其中的任何一个或全部。
我正在尝试找到列出所有客户和所有设置的最快(性能方面)方式。
我尝试过使用函数、表值函数、连接、交叉应用……而且速度非常慢。仅对于下面的示例,我的本地 SQL 服务器需要 35 秒才能列出 2,000 个用户及其设置。在现实生活中我有超过 250 万。
FN 和 TVF 对于单个用户来说非常快 - 但一旦达到多行,它就会停止。
写一个快速版本有什么诀窍吗?
注意:我很高兴在视图中硬编码设置 GUID,因为它们很少更改。
注意:数据可能会非常频繁地更改,因此(我认为)索引视图已被淘汰。
Sample Database Tables, Indexes, View, Data and Select * I am trying to acheive
重要提示 - 这是显示结构的数据样本,而不是完整的数据库。
【问题讨论】:
-
重新性能:需要给
CustomerSetting表添加索引。我建议使用复合 (Id_Customer, Setting),但您应该尝试一下。见sqlskills.com/blogs/kimberly/…
标签: sql-server view query-performance