sql-server – 无法在SQL Server 2012上运行的T-SQL CTE实现技术
发布时间:2021-01-17 13:07:08 所属栏目:MsSql教程 来源:网络整理
导读:我必须使用以下技术来实现我的CTE并提高视图性能: WITH CTE AS( SELECT TOP 100 PERCENT ORDER BY ...)WITH CTE AS( SELECT TOP 2147483647 ORDER BY ...) 现在,这两种方式都不起作用.有没有人面临同样的问题或知道在SQL Server 2012中这个东西是无效的?
我必须使用以下技术来实现我的CTE并提高视图性能: WITH CTE AS( SELECT TOP 100 PERCENT ORDER BY ... ) WITH CTE AS( SELECT TOP 2147483647 ORDER BY ... ) 现在,这两种方式都不起作用.有没有人面临同样的问题或知道在SQL Server 2012中这个东西是无效的? 解决方法您可以尝试使用多步表值函数.这样,服务器就被迫将TVF的结果实现为表变量.此外,您可以在声明此表类型(PRIMARY KEY,UNIQUE,CHECK)时尝试使用声明性约束来提高最终查询的性能:CREATE FUNCTION CocoJamboSchema.CocoJamboFunction(@parameters ...) RETURNS @Results TABLE ( Col1 INT NOT NULL,Col2 VARCHAR(10) NULL,... PRIMARY KEY(Col1) ) AS BEGIN WITH MyCTE (...) AS ( ... ) INSERT @Results (...) FROM MyCTE; RETURN; END; SELECT ... FROM CocoJamboSchema.CocoJamboFunction(param values) f INNER JOIN MySchema.MyTable t ON f.Col1=t.Col1 ORDER BY t.Col1; 不要忘记将ORDER BY子句添加到最终查询中. 最近,我使用此解决方案来优化另一个视图(ViewB)使用的视图(ViewA,DISTINCT LEFT JOIN GETDATE()).在这种情况下(ViewA)无法创建索引视图(因为DISTINCT LEFT JOIN GETDATE()).相反,我创建了一个多语句TVF,它通过减少最终查询的逻辑读取(在某些情况下显着)来提高性能. 注意:当然,您可以尝试使用index view. (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql-server – 为什么我需要两个SQL Server Service Broker
- sql-server – 您可以在数据透视表中小计行和/或列吗?
- sql – 如何通过rails迁移设置Postgres中主键(ID)列的起始点
- sql-server – 处理多租户数据库体系结构中越来越多的租户
- exchange-2003 – 腐败交换数据库 – 如何将数据从outlook恢
- sql – “lt;gt;”在Oracle中意味着什么
- sql-server – 我有关于死锁的数据,但我无法理解它们为什么
- asp.net DataTable相关操作集锦(筛选,取前N条数据,去重复行
- sql-server – 从非sysadmin域用户拥有的SQL Agent作业运行
- sql-server – 外部应用vs左连接性能
站长推荐
- SQL Group和Sum By Month – 默认为零
- 如何统计分析SQL Server Profiler 跟踪的SQL
- .net – SQL Server视图可以有主键和外键吗?
- sql-server – 当一个以前快速的SQL查询开始运行
- sql-server – SET STATISTICS IO-工作表/工作文
- sql-server – 在“select top n”查询中返回未锁
- SQL Server内存遭遇操作系统进程压榨的解决方法
- 本周将有4种病毒发作 专家提醒勿上不明网站
- sql-server-2005 – 从SQL Server 2008降级到200
- 巧用net user命令 限定系统用户登录时间
热点阅读