美文网首页
sqlserver ORDER BY 子句在视图、内联函数、派

sqlserver ORDER BY 子句在视图、内联函数、派

作者: 杀小贼 | 来源:发表于2018-09-20 14:47 被阅读0次

    在sqlserver数据库创建视图时,使用order by 排序,报了这个错误,在网上查了下解决办法,改动最小的方法如下:
    select top 100 percent * from tb order by score (查询前100%的数据)

    参考子查询相关优化

    sql="select top 30 * from data where title='"&title1&"' order by id desc" 原意是选出符合“where 条件”的记录集里的“前30条”
    但是,对于该SQL语句,由于语句里同时存在where和top语句的,并且where条件列不是合适的索引,程序执行的是全表扫描,首先是查找符合where条件的记录, 而这里的top限制形同虚设。如果全表是百万级别以上的数据表,那么就这么一个简单的判断,就有可能拖垮数据库。所以需要先把符合“where条件”的记录,用一个子查询筛选出来,再在筛选结果集里选top30。
    因为SQL规则规定,如果子查询里,有order ...,就必须有TOP,所以就用SELECT TOP 100 PERCENT来限定,top 100 percent是为了保证筛选出所有符合条件的数据条目。
    select * from (select top 100 percent * from tb order by score) as a1 (因为你也 不知道有多少条记录,所以只能选择显示100%)'

    相关文章

      网友评论

          本文标题:sqlserver ORDER BY 子句在视图、内联函数、派

          本文链接:https://www.haomeiwen.com/subject/ixqnnftx.html