SqlServer 2000的分页查询存储过程

时间:2021-07-06 14:04:10
1.所有表没有主键,不管是单主键,还是联合组建,也没有ID这个字段.......
2.表没有什么索引,这个其实倒是无所谓的
3.何查询语句都可能查出来2条或以上记录,其实就是条件1的升级版。。。。
4.不能变更原有的表设计,如果想新建表并且导数据的必须要做到100%的数据实时同步,并且不能影响原有的cha|||入效率
5.因为项目原因,不能使用视图



要求存储过程可以做到,传入一个sql查询语句(可能是一个多表关联的查询),每页显示条数,查询页号,返回当页信息,总条数,总页数(第一个是必须要的,后面2个如果不方便就算了),要求执行时间小于10秒,数据量很小,大概是100W条的数据中查询(有关联查询的笛卡尔积结果条数不大于1KW)。


7 个解决方案

#1


mission is impossible

#2


这个有点难度,一时想不出什么好办法来。

#3




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 表

#4


SqlServer 2000的分页查询存储过程  

是  not exists  

#5


引用 4 楼 yangb0803 的回复:
SqlServer 2000的分页查询存储过程  

是  not exists  


他的表没有 PK,重复的数据多,使用 not exists 不大好用。

#6


引用 5 楼 wmxcn2000 的回复:
他的表没有 PK,重复的数据多,使用 not exists 不大好用。


主要是。。。。2000,  好多好的方法都没法用啊。。。。

#7


这么长时间都没有好的方案,看来只能用3楼的方法了,虽然一张100W不到的数据用了20多秒。。。。看来只好用程序里的缓存之类的来提速了

#1


mission is impossible

#2


这个有点难度,一时想不出什么好办法来。

#3




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 表

#4


SqlServer 2000的分页查询存储过程  

是  not exists  

#5


引用 4 楼 yangb0803 的回复:
SqlServer 2000的分页查询存储过程  

是  not exists  


他的表没有 PK,重复的数据多,使用 not exists 不大好用。

#6


引用 5 楼 wmxcn2000 的回复:
他的表没有 PK,重复的数据多,使用 not exists 不大好用。


主要是。。。。2000,  好多好的方法都没法用啊。。。。

#7


这么长时间都没有好的方案,看来只能用3楼的方法了,虽然一张100W不到的数据用了20多秒。。。。看来只好用程序里的缓存之类的来提速了