Sql server 在SQL Server中创建复杂视图而不创建索引视图的最佳方法是什么?

Sql server 在SQL Server中创建复杂视图而不创建索引视图的最佳方法是什么?,sql-server,view,query-performance,Sql Server,View,Query Performance,我有一个简单的客户、设置和客户设置结构 大约有60种设置,所有设置都使用UNIQUEIDENTIFIER作为密钥,因为这些设置可以在多个系统中共享,并且可以以任何顺序创建,因此不能保证Id相同) 每个客户都可以有这些设置,但不一定有任何或全部设置 我试图找到列出所有客户和所有设置的最快(性能方面的)方法 我尝试过使用函数、表值函数、连接、交叉应用……但速度非常慢。就下面的示例而言,在我的本地SQL server上列出2000个用户及其设置需要35秒。在现实生活中,我有超过250万 FN和TVF对

我有一个简单的客户、设置和客户设置结构

大约有60种设置,所有设置都使用UNIQUEIDENTIFIER作为密钥,因为这些设置可以在多个系统中共享,并且可以以任何顺序创建,因此不能保证Id相同)

每个客户都可以有这些设置,但不一定有任何或全部设置

我试图找到列出所有客户和所有设置的最快(性能方面的)方法

我尝试过使用函数、表值函数、连接、交叉应用……但速度非常慢。就下面的示例而言,在我的本地SQL server上列出2000个用户及其设置需要35秒。在现实生活中,我有超过250万

FN和TVF对于单个用户来说速度非常快,但一旦达到多行,它就会停止运行

写一个快速版本有什么诀窍吗

注意:我很高兴在视图中硬编码设置GUID,因为它们很少更改

注意:数据可能会非常频繁地更改,因此(我认为)索引视图是不存在的


重要-这是一个数据示例,用于显示结构,而不是完整的数据库。

实际结构是否有索引?而不是20个关节,您只需将SettingValue行设置为列

真正的结构有索引吗?而不是20个关节,您只需将SettingValue行放入列中即可重新执行:您需要向
CustomerSetting
表添加索引。我建议使用组合(Id_客户,设置),但您应该进行试验。请参见查看:重新性能:您需要向
CustomerSetting
表添加索引。我建议使用组合(Id_客户,设置),但您应该进行试验。请看以下内容: