一尘不染

如何查询具有最高性能的DB2中的数据范围?

sql

通常,我需要从某个范围的表中检索数据。例如,每个搜索结果都有一个单独的页面。在MySQL中,我使用LIMIT关键字,但在DB2中,我不知道。现在,我使用此查询来检索数据范围。

SELECT * 
FROM(
   SELECT  
      SMALLINT(RANK() OVER(ORDER BY NAME DESC)) AS RUNNING_NO
      , DATA_KEY_VALUE
      , SHOW_PRIORITY
   FROM 
      EMPLOYEE
   WHERE 
      NAME LIKE 'DEL%'
   ORDER BY
      NAME DESC
   FETCH FIRST 20 ROWS ONLY
) AS TMP
ORDER BY 
  TMP.RUNNING_NO ASC
FETCH FIRST 10 ROWS ONLY

但我知道这是不好的风格。那么,如何查询最高性能呢?


阅读 190

收藏
2021-03-10

共1个答案

一尘不染

我的需求已经添加到DB2 9.7.2中了。

DB2 9.7.2为限制查询结果添加了新的语法,如下所示:

SELECT * FROM TABLE LIMIT 5 OFFSET 20

数据库将从第no行中检索结果。21-25

2021-03-10