如何从数据库中高效的取出需要的记录?
比如有一个表
Create table Test(
nID integer primary key,
sName varchar(20),
sAddress varchar(200)
);
表中有20万条记录。在客户程序中查询显示时按20条分页显示。其中,sName、sAddress
可以重复。按任意字段排序,如何高效的取出我要的那20条?
我试过的方法:
1、用ADO读记录,用PageSize属性设置分页大小,然后根据页号取得数据。
但是这样做,是把数据全部读出,然后分页。这样我需要的数据只占读出的数据的万分之一。效率很低。
2、用存储过程。创建一个临时表,将记录按我需要的顺序存入。然后取得我需要的数据。
这样做也很低效。
3、用存储过程。定义一个游标,从游标中取出需要的数据。性能仍不能让人满意。
注意,能按任意字段排序。比如按sName排序。选出大于'张三'的记录。
select * from Test where sName > '张三'
由于名子可重复,所以用Top 20 无法取出我要的数据。