SqlServer 2000的分页查询存储过程,该如何处理
SqlServer 2000的分页查询存储过程
1.所有表没有主键,不管是单主键,还是联合组建,也没有ID这个字段.......
2.表没有什么索引,这个其实倒是无所谓的
3.何查询语句都可能查出来2条或以上记录,其实就是条件1的升级版。。。。
4.不能变更原有的表设计,如果想新建表并且导数据的必须要做到100%的数据实时同步,并且不能影响原有的cha|||入效率
5.因为项目原因,不能使用视图
要求存储过程可以做到,传入一个sql查询语句(可能是一个多表关联的查询),每页显示条数,查询页号,返回当页信息,总条数,总页数(第一个是必须要的,后面2个如果不方便就算了),要求执行时间小于10秒,数据量很小,大概是100W条的数据中查询(有关联查询的笛卡尔积结果条数不大于1KW)。
------解决思路----------------------
將传入的SQL语句替代 tbl 表
1.所有表没有主键,不管是单主键,还是联合组建,也没有ID这个字段.......
2.表没有什么索引,这个其实倒是无所谓的
3.何查询语句都可能查出来2条或以上记录,其实就是条件1的升级版。。。。
4.不能变更原有的表设计,如果想新建表并且导数据的必须要做到100%的数据实时同步,并且不能影响原有的cha|||入效率
5.因为项目原因,不能使用视图
要求存储过程可以做到,传入一个sql查询语句(可能是一个多表关联的查询),每页显示条数,查询页号,返回当页信息,总条数,总页数(第一个是必须要的,后面2个如果不方便就算了),要求执行时间小于10秒,数据量很小,大概是100W条的数据中查询(有关联查询的笛卡尔积结果条数不大于1KW)。
------解决思路----------------------
select top 每页显示条数 * from tbl as t
where not exist
(
select 1 from
(
select top (每页显示条数*页号) * from tbl) as a
where a.字段1 =t.字段1 and a.字段2 =t.字段2
and a.字段3 =t.字段3 and a.字段4 =t.字段4
and ......
)
)
將传入的SQL语句替代 tbl 表