我是一个新手C#程序员,这是我做分页的SQLServer代码,求大神帮忙改进,提高查询效率:代码见问题补充
selecttop5*from表Awhere1=1and查询条件1and查询条件2andIDnotin(selecttop5nidfrom表Awhere1=1and查询条...
select top 5 * from 表A where 1=1 and 查询条件1 and 查询条件2 and ID not in (select top 5 nid from 表A where 1=1 and 查询条件1 and 查询条件2 排序) 排序
这是我分页最终生成的SQL代码,效率很低,求大侠改进 展开
这是我分页最终生成的SQL代码,效率很低,求大侠改进 展开
4个回答
展开全部
select * from (select ROW_NUMBER() over(order by [标识列] desc) Row,* from 表A) t where t.row between start and end
不知道.你是否能看懂我写的. 你那样会导致你只能查询某一段另外如果按照其他列排序将出错.另外还有..如果ID不连续将有些许其他连带问题..
不知道.你是否能看懂我写的. 你那样会导致你只能查询某一段另外如果按照其他列排序将出错.另外还有..如果ID不连续将有些许其他连带问题..
更多追问追答
追问
我果然看不懂,不过我的方式ID不连续到不会出问题的
追答
如果您遇到的是10W+的数据就明白了撒..
具体的需要您以后遇到各种情况.例如按照ID查询按照另外某字段排序.比如查询最近的邮件发送情况
查询上班打卡情况
查询迟到情况.
工资多少情况等等
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。
展开全部
两个where 1=1去掉
追问
嗯,去掉。可是这并不能根本性解决问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select top 5 * from 表A where ID not in (select top 5 nid from 表A )
and 查询条件1 and 查询条件2 排序
and 查询条件1 and 查询条件2 排序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询