通过SQL 查询分析器,显示比较:我的结论是: 分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句 分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句 分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用 SELECT u.username FROM `user` u join contact_info c on (u.id=c.user_id) and c.address='123';
创建表格并添加300万数据
use Stored
CREATE TABLE UserInfo( --创建表
id int IDENTITY(1,1) PRIMARY KEY not null,--添加主键和标识列
UserName varchar(50)
)
declare i int --添加3百万数据,大概4分钟时间
set i=1
while i<3000000
begin
insert into UserInfo (UserName) values(i)
set i=i+1
en
一起是用oracle数据库,感觉oracle数据库强大、查询速度是杠杠的。换了家公司用的是SQL SERVICE。以前用了1年现在捡回以前的记忆。动手写了动态SQL过存储过程分页。感觉和oracle语法不太一样外。其他感觉没啥区别。。
这个是通用存储过程。但是有一个问题我没解决是条件怎么通用写。我条件都是拼接字符串感觉很不安全。不晓得博友门有木有什么解决方案
不多说了直接上代码。
GO
IF (SELECT COUNT(*) FROM sysobjects s WHERE s
下面就来重点说说这几种分页方式:
一般情况下我们都是通过sql语句来分页,这在无论哪种开发语音都是通用的,
使用sql语句或者存储过程分页的方式最主要的是要在读取数据的时候把sql语句或者存储过程写好,它的原理是只读取当前要显示的几行记录,所以要根据页数和每页显示的数目来写语句,如下:
Select top pageSize * from News where id not in(select top (Page-1)*pageSize id from News)
很显然只要将pageSiz