sql-server – 为什么ORDER BY不属于View?
I understand that you cannot have在视图中订购. (至少在我正在行使的SQL Server 2012中) 我也领略排序视图的“正确”要领是在查询视图的SELECT语句周围安排一个ORDER BY. 可是对付适用SQL和视图的行使相对较新,我想相识为什么这样做是通过计划完成的.假如我正确地遵循了汗青记录,这曾经是也许的,而且明晰地从SQL Server 2008中删除了等等(不要在确切的版本上引用我). 可是,我可以想出微软为什么删除此成果的最佳缘故起因是“视图是未分类的数据荟萃”. 我假设有一个很好的,逻辑上的缘故起因,为什么一个视图应该未分类.为什么视图不能成为扁平化的数据荟萃?为什么特意没有排序?好像很难想出(至少对付我/恕我直言)看起来很是直观的环境. 办理要领(虽然,抛开索引的概念.)视图未实现 – 数据未存储,因此怎样对其举办排序?视图有点像只包括没有参数的SELECT的存储进程……它不包括数据,它只生涯查询的界说.因为对视图的差异引用也许必要以差异方法排序数据,因此您执行此操纵的方法 – 就像从表中选择一样,按照界说也是未排序的行荟萃 – 就是在外部查询中包括order by . 还要对汗青有所相识.你永久不能在视图中安排ORDER BY,而不包罗TOP.在这种环境下,ORDER BY指定TOP包括哪些行,而不是怎样泛起它们.可巧在SQL Server 2000中,假如TOP为100 PERCENT或{某个数字> =表中的行数},优化器相等简朴,最终天生了一个与TOP /匹配的打算订购.可是这种举动从未获得担保或记录 – it was just relied upon based on observation,which is a bad habit.当SQL Server 2005问世时,因为优化器中的变动导致行使差异的打算和运算符,这种举动开始“粉碎” – 除其他外,TOP / ORDER BY会假如它是百分之百被完全忽略.一些客户云云高声地诉苦这一点,微软宣布了一个跟踪符号来规复旧的举动.我不规划汇报你符号是什么,由于我不想让你行使它,我想确保意图是正确的 – 假如你想要一个可猜测的排序次序,在外部查询上行使ORDER BY. 总结并同样澄清你提出的一点:微软没有删除任何对象.他们使产物更好,而且作为副浸染,这种无证的,无担保的举动变得不那么靠得住.总的来说,我以为该产物更得当它. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |