sql-server – 无法在SQL Server 2012上运行的T-SQL CTE实现技能
发布时间:2021-01-18 01:57:29 所属栏目:编程 来源:网络整理
导读:我必需行使以下技能来实现我的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. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |