一般我们在开发程序分页时,无非是逻辑分页和物理分页两种。逻辑分页也就是内存分页,这样对于大数据量(比如超过10万及以上)的时候,操作的效率就会比较低下,因此在大数据量的时候,一般建议进行物理分页,也就是数据库分页。
那么,通过命名SQL如何处理分页查询呢?最优方式是在编写命名SQL时即在SQL语句中进行分页的处理。以下为几种常见数据库的分页查询:
一:Oracle
SELECT * FROM (SELECT rownum as rowno, a.* from 表名 a where rownum <= endIndex ) b where b.rowno >= startIndex
二:DB2
SELECT * FROM (select 字段1,字段2,字段3,rownumber() over(ORDER BY 排序用的列名 ASC) AS rn from 表名) AS a1 WHERE a1.rn BETWEEN 10 AND 20
三:SQL Server
SELECT TOP endIndex*,identity(int,0,1) as #Temp_id into #temp from 表名 SELECT * FROM #temp where #Temp_id between startIndex and endIndex drop table #temp
四:MySQL
SELECT * FROM 表名 limit startIndex, length
通过在编写命名SQL时写明分页查询的语句,将诸如startIndex,endIndex等变量传递给执行的命名SQL,即可以做到通过命名SQL的进行数据的分页查询。