最近在工作中使用到了GridView这个控件,很好用,可当绑定数据量较大时,就会有性能问题,经过分析,找到了一种可以解决这个问题的方法,其实质是下面的SQL(Oracle)语句:
select a.*
from (select rownum as row_id, b.*
from (select * from table_name order by column_name asc) b) a
where a.row_id between record_begin_index and record_end_index
其中table_name表示需要查询的表名,column_name是要排序的列名,record_begin_index是要显示的表中第record_begin_index行的开始位置,record_end_index是要显示的表中第record_end_index行的结束位置,如果我想查询表中第101行到120行的数据,上面where后的语句就是:a.row_id between 101 and 120。
当然上面的SQL语句最好能写成Procedure,再结合.NET Framework 2.0中的ObjectDataSource就可以了(关于ObjectDataSource的使用,网上有很多例子,这里就不赘述了)。