【问题标题】:Whats the best way to create a complex view in SQL Server, without an Indexed view?在没有索引视图的情况下,在 SQL Server 中创建复杂视图的最佳方法是什么?
【发布时间】: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

重要提示 - 这是显示结构的数据样本,而不是完整的数据库。

【问题讨论】:

标签: sql-server view query-performance


【解决方案1】:

真实的结构有索引吗?而不是 20 个关节,您只需 PIVOT 将 SettingValue 行放入列中

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多