CN106227894B - 一种数据分页查询方法和装置 - Google Patents
一种数据分页查询方法和装置 Download PDFInfo
- Publication number
- CN106227894B CN106227894B CN201610720954.9A CN201610720954A CN106227894B CN 106227894 B CN106227894 B CN 106227894B CN 201610720954 A CN201610720954 A CN 201610720954A CN 106227894 B CN106227894 B CN 106227894B
- Authority
- CN
- China
- Prior art keywords
- key
- major key
- major
- query
- item
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据分页查询方法和装置,该方法包括:确定待查询的数据表当前的分页查询参数,该分页查询参数包括当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;确定该数据表的主键以及该主键的个数;从预置的多组查询语句模板组中,确定出与主键的个数对应的目标查询语句模板组;在该目标查询语句模板组中待写入该分页查询参数的位置写入该分页查询参数,并在该目标查询语句模板中待写入该主键的位置写入该主键,得到目标查询语句组;通过在数据库中执行该目标查询语句组,从该数据表中查询出从该目标条数开始的该待显示条数个记录。该方法和装置可以降低数据分页所需耗费的网络资源以及数据处理资源。
Description
技术领域
本申请涉及数据处理技术领域,更具体的说是涉及一种数据分页查询方法和装置。
背景技术
数据分页是指在大数据量的情况下,按照用户指定的页数,经过运算查询出需要显示的数据内容,而且,每次仅仅查询部分数据,并按页显示。例如,需要查询的总数据量为35条数据,而每页显示10条数据,那么就需要分4页进行显示,这样,第1-3页每页显示10条数据,而第4页显示5条数据。
由于一些数据库的特殊性,数据分页的实现过程较为复杂。如,以Sybase数据库为例,Sybase数据库是一种关系型数据库,该种数据库在进行数据查询时,使用的是TOP方法,即,查询出满足查询条件的前x条数据。这样,当用户希望从Sybase数据库查询出满足查询条件的第m条开始到第n条(m小于n,m和n可以理解为大于或等于一的自然数)结束的数据内容时,Sybase数据库只能是查询出前n条满足查询条件的数据,然而Sybase数据库将数据传输给服务器之后,再由服务器从该前n条满足查询条件的数据中筛选出第m条到第n条数据,并由服务器根据用户指定的页数进行分页计算,实现数据分页。
然而,由于Sybase数据库每次只能查询出前n条数据,使得每次查询出的数据远大于用户所需查询的数据的数量,在最坏的情况下,甚至可能会将整个数据表作为查询结果反馈给服务器,从而由于传输的数据量过大而导致资源浪费。以总数据1000条的数据表为例,用户希望查看数据库表的满足查询条件的最后10条数据,即第991条至第1000条,则Sybase数据库可能会将满足查询条件的1000条数据全部返回给服务器。
同时,由于服务器接收到Sybase数据库返回的数据之后,仍需要从数据中筛选出满足查询条件的数据结果,并进行分页展现,使得服务器需要对数据进行二次处理,从而增大数据处理量,产生较大的数据处理开销。
发明内容
有鉴于此,本申请提供了一种数据分页查询方法和装置,以降低数据分页所需耗费的网络资源以及数据处理资源。
为实现上述目的,本申请提供如下技术方案:
一种数据分页查询方法,所述方法包括:
确定待查询的数据表当前的分页查询参数,所述分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;
确定所述数据表的主键以及所述主键的个数;
从预置的多组查询语句模板组中,确定出与所述主键的个数对应的目标查询语句模板组,其中,所述查询语句模板组中包括至少两条查询语句模板;
在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组;
通过在数据库中执行所述目标查询语句组,从所述数据表中查询出从所述目标条数开始的所述待显示条数个记录。
优选的,所述查询语句模板为使用TOP关键字的结构化查询语言SQL语句模板。
优选的,所述在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组,包括:
计算目标条数与所述待显示条数相加所得的第一数值;
将所述第一数值写入到所述目标查询语句模板组中当前分页的结束条数所对应的数值,并向所述目标查询语句模板组的查询语句中写入所述查询条件、待显示条数以及所述主键。
优选的,每组所述查询语句模板组包括:
第一查询语句模板和第二查询语句模板;
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为所述目标条数m与所述待显示条数c之和;
所述第二查询语句模板的查询语句用于执行以下操作:
从所述前r条记录中,按照降序获取满足所述查询条件,且所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件的前c条记录,所述指定记录为所述前r条记录按照升序排序时的最后一条记录。
优选的,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
当所述主键个数为一个时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
所述主键的键值小于等于所述指定记录内所述主键的键值;
当所述主键包括第一主键和第二主键两个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
所述第一主键的键值等于所述指定记录的所述第一主键的键值且所述第二主键的键值小于等于所述第二主键的键值,或者,所述第一主键的键值小于所述指定记录的所述第一主键的键值;
当所述主键包括第一主键、第二主键和第三主键这三个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
第一主键的键值等于所述指定记录的第一主键的键值、第二主键的键值等于所述指定记录的第二主键的键值且第三主键的键值小于等于所述指定记录的第三主键的键值,或者,第一主键的键值等于所述指定记录的第一主键的键值且第二主键的键值小于所述指定记录的第二主键的键值,或者,所述第一主键的键值小于所述指定记录的第一主键的键值。
优选的,在所述确定待查询的数据表当前的分页查询参数之前,还包括:
确定满足所述查询条件的所有记录的总条数;
基于所述总条数、预设的每个分页的显示条数以及所述当前起始查询的目标条数,确定当前分页待显示的待显示条数。
另一方面,本申请实施例还提供了一种数据分页查询装置,包括:
参数确定单元,用于确定待查询的数据表当前的分页查询参数,所述分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;
主键确定单元,用于确定所述数据表的主键以及所述主键的个数;
模板选取单元,用于从预置的多组查询语句模板组中,确定出与所述主键的个数对应的目标查询语句模板组,其中,所述查询语句模板组中包括至少两条查询语句模板;
语句生成单元,用于在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组;
数据查询单元,用于通过在数据库中执行所述目标查询语句组,从所述数据表中查询出从所述目标条数开始的所述待显示条数个记录。
优选的,所述查询语句模板为使用TOP关键字的结构化查询语言SQL语句模板。
优选的,所述语句生成单元,包括:
计算子单元,用于计算目标条数与所述待显示条数相加所得的第一数值;
语句生成子单元,用于将所述第一数值写入到所述目标查询语句模板组中当前分页的结束条数所对应的数值,并向所述目标查询语句模板组的查询语句中写入所述查询条件、待显示条数以及所述主键。
优选的,每组所述查询语句模板组包括:
第一查询语句模板和第二查询语句模板;
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为所述目标条数m与所述待显示条数c之和;
所述第二查询语句模板的查询语句用于执行以下操作:
从所述前r条记录中,按照降序获取满足所述查询条件,且所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件的前c条记录,所述指定记录为所述前r条记录按照升序排序时的最后一条记录。
经由上述的技术方案可知,在确定出待查询的数据表当前的分页查询参数之后,还可以定位出该数据表的主键以及主键个数,这样,依据主键个数可以选择查询语句模板组,并将分页查询参数以及主键等填写到查询语句模板组的查询语句中便可以生成数据库可执行的目标查询语句组,从而通过在数据库中执行该目标查询语句组便可以从该数据表中查询出从该目标条数开始的该待显示条数个记录,这样,在需要在当前分页中显示的满足预设条件的第m至第n(m小于n,m和n为大于或等于一的自然数)条数据记录时,便可以由数据库执行目标查询语句组实现,避免了数据库将满足查询条件前n条数据都传输给服务器,再由服务器筛选出满足条件的记录的情况,减少了数据库与服务器之间数据交互的数据量,降低了网络资源消耗,也避免了服务器对数据的二次处理,降低了数据处理开销。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1示出了本申请一种数据分页查询方法一个实施例的流程示意图;
图2示出了本申请数据分页查询方法中数据库查询顺序的示意图;
图3示出了本申请一种数据分页查询装置一个实施例的结构示意图。
具体实施方式
先将本申请实施例中可能涉及到的一些术语进行解释:
Sybase数据库:由美国Sybase公司开发的关系型数据库产品,主要包括SybaseAdaptive Server Enterprise(ASE)和面向数据仓库的Sybase IQ等产品。
数据分页:指大数据量的情况下,每次只查询部分数据,并按页显示。数据分页查询就是在大数据量的前提下,按照用户指定的页数,经过运算查询出要显示数据内容的方法,如,用户设定每页显示10条,而记录总共有35条数据,那么总共有4页,第1-3页每页10条数据,而第4页不足10条只显示最后剩余的5条数据。
主键/联合主键:表中经常有一个列或多列的组合,其值能唯一地标识表中的每一行。这样的一列或多列称为表的主键,通过它可强制表的实体完整性。当某个数据库表无法通过单一的列唯一标识每一行数据,需要多个列的数据共同确定数据的唯一性的情况,也称为联合主键。
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例的数据分页查询方法和装置可以通过在服务器侧生成数据库可执行的查询语句组,这样数据库通过执行该查询语句组便可以完成数据分页,从而解决了服务器对无法实现自动分页的数据库内数据进行分页而导致的数据传输量大、网络资源耗费等问题。
参见图1,其示出了本申请一种数据分页查询方法一个实施例的流程示意图,本实施例的方法适用于服务器,该服务器可以向数据库下发查询命令,以实现数据查询。本实施例的方法可以包括:
101,确定待查询的数据表当前的分页查询参数。
其中,分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数。
其中,查询条件由用户输入,如,查询条件可以是结构化查询语言(SQL,Structured Query Language)中的where条件,只要是符合SQL语法的全部查询条件都是可以的。例如SQL语句:“select*from TABLE where A=’1’and B=’2’”中,查询条件就是:A列的值等于1,而且B列的值等于2的记录。
可以理解的是,随着数据分页的进行,当前分页在所有分页的排序不同,该当前待显示的待显示条数以及起始查询的目标条数也会有所不同。如,以包含有52条数据的数据表为例,用户设定的每个分页显示5条,用户需要查询的查询条件为满足设定条件(如A列的值大于5)的第6-52条记录,那么第一页分页的起始查询的目标条数为第6条,且第一分页的待显示条数为5条数据;如果当前分页为第二分页,那么起始查询的目标条数为第11条,第二分页的待显示条数仍为5条;如果当前分页为第三分页,那么起始查询的目标条数为第16条,第二分页的待显示条数仍为5条,以此类推,最后一页分页起始查询的目标条数为51条,而该最后一页分页待显示的条数为2条(最后一页分页只有51条和第52条,不足5条)。
可选的,在该步骤101之前,还可以确定满足该查询条件的所有记录的总条数t;例如,需要查询满足预设条件的第6条至第52条记录,那么总条数t为47。这样,可以基于该总条数t、当前起始查询的目标条数m以及预设的每个分页的显示条数c1,确定当前分页待显示的待显示条数c。如,m+c1小于t,则当前待显示的显示条数c为用户设定的每个分页的显示条数c1,如果m+c1大于t,则c=t-m+1。
102,确定该数据表的主键以及主键的个数。
在数据库表中主键是用来唯一标识某一条数据。主键为数据表中任意一个字段,一般情况下,主键的个数可以为一个、两个或者三个,其他主键个数的情况较为少见。
通过查询数据库的系统表,获取数据库表的主键个数。
以下面表1为例进行说明:
表1
假设表1为一个数据库表,那么id这个字段可以唯一标识每一行的数据,所以可以设置id为这个数据表的主键。
但有些情况单一的一个字段不能完全唯一标识每一行数据,如参见表2:
表2
order_id | seq | item |
1001 | 1 | A |
1001 | 2 | B |
1002 | 1 | C |
1003 | 1 | D |
在表2的数据表中,假设字段“order_id”表示订单号,“seq”表示订单中物品的序列号,那么在一个订单中可能包含多个物品的情况下,订单号是相同的,因此,如果仅仅使用“order_id”作为唯一的主键,那么将无法区分同一个订单内的物品信息,即“order_id”字段无法唯一标识每一条数据。在该种情况下,可以使用“order_id”和“seq”这两个字段均作为主键,即这两个字段作为联合主键,可以定位到每一条数据。
103,从预置的多组查询语句模板组中,确定出与该主键的个数对应的目标查询语句模板组。
其中,该查询语句模板组中包括至少两条查询语句模板。
可选的,考虑到只有当数据库仅仅支持查询满足查询条件前x(x为设定的指定值)条数据的情况下,服务器无法直接下发查询条件对应的查询指令,如,数据库为Sybase数据库时,该数据库没有根据查询的起始位置和查询条数直接查询数据的方法。在该种情况下,为了使得数据库可以执行该查询语句模板组对应的查询语句,该查询语句模板组中的每条查询语句模板均为使用TOP关键字的SQL语句模板。其中,使用TOP关键字的SQL语句可以理解为支持查询满足查询条件的前指定数量条数据的SQL语句。
可以理解的是,在本申请实施例中为了实现Sybase数据库通过执行支持TOP关键字的SQL语句,可以定位出满足查询条件的指定区段的记录,预置了包含至少两条支持TOP关键字的SQL语句模板,这样通过该至少两条TOP关键字的SQL语句模板可以实现多次查询,最终定位出满足查询条件且处于指定区段(如,从第m条记录到第n条记录,m小于n)。
104,在该目标查询语句模板组中待写入该分页查询参数的位置写入该分页查询参数,并在该目标查询语句模板中待写入该主键的位置写入该主键,得到目标查询语句组。
可以理解的是,在查询语句模板组中每条查询语句模板均会有一些需要填写参数的位置,针对不同的查询条件以及每页需要显示的显示条数等不同,每条查询语句模板中待填写参数的位置处所需填写的参数会有所不同,但是在分页查询参数确定的情况下,该分页查询参数内各个参数也是固定不变的,这样将分页查询参数写入到该目标查询语句模板组的每条查询语句模板的相应位置之后,便可以生成数据库可以执行的查询语句组。相应的,该目标查询语句组同样可以包括至少两条目标查询语句。
105,通过在数据库中执行该目标查询语句组,从该数据表中查询出从该目标条数开始的该待显示条数个记录。
具体的,可以将该目标查询语句组发送给数据库,以便由数据库通过执行该目标查询语句组,定位出从该目标条数开始的该待显示条数个记录,并由数据库将查询结果返回给服务器。
其中,目标条数开始的该待显示条数个记录便可以理解为满足查询条件且从目标条数开始至当前分页结束条数之间记录,例如,从第m条开始到第n条结束的共n-m+1条记录。
本申请实施例的方法在确定出待查询的数据表当前的分页查询参数之后,还可以定位出该数据表的主键以及主键个数,这样,依据主键个数可以选择查询语句模板组,并将分页查询参数以及主键等填写到查询语句模板组的查询语句中便可以生成数据库可执行的目标查询语句组,从而通过在数据库中执行该目标查询语句组便可以从该数据表中查询出从该目标条数开始的该待显示条数个记录,这样,在需要在当前分页中显示的满足预设条件的第m至第n条数据记录时,便可以由数据库执行目标查询语句组实现,避免了数据库将满足查询条件前n条数据都传输给服务器,再由服务器筛选出满足条件的记录的情况,减少了数据库与服务器之间数据交互的数据量,降低了网络资源消耗,也避免了服务器对数据的二次处理,降低了数据处理开销。
而且,由于最终数据库返回的查询结果只有当前分页需要显示的数据记录,也有利于缩短了数据传输时间,也提高了数据分页查询的效率。
另外,本实施例的方法对于主键为联合主键的数据表,也能很好的进行数据分页查询的支持,开发人员无需关心数据表主键个数,只需按照标准参数填写数据库表名、查询条件、起始查询位置和查询条数等参数,即可获取查询结果,减少了大量编写SQL语句以及程序调优的时间。
可以理解的是,数据库需要确定出当前分页所对应的最后一条数据记录为哪一条数据记录,为了便于区分,将当前分页最后一条数据记录所对应的条数称为当前结束条数。当前结束条数为目标条数与所述待显示条数相加所得的第一数值。例如,当前起始查询的目标条数为第4条数据记录,当前分页待显示的待显示条数为5条,那么当前结束条数的数据记录为第4条+5条为第9条数据记录。因此,在本实施例中还可以计算目标条数与所述待显示条数相加所得的第一数值;然后,将该第一数值写入到目标查询语句模板组中当前结束条数所对应的数值,并向该目标查询语句模板组的查询语句中写入查询条件、待显示条数以及所述主键。
可选的,本申请实施例的查询语句模板组的查询语句模板可以是使用数据库的主键字段进行两次排序,直接在数据库中将满足查询条件第m至第n条的数据定位出来,以返回给服务器,从而解决了网络传输大量数据以及服务器的数据资源开销。如,参见图2,其示出了通过执行查询语句模板组内的查询语句组,数据库两次查询操作的示意图。第一次查询出满足查询条件的前r条记录,r为当前起始查询的目标条数m与待显示条数c之和;第二次从按照降序获取满足查询条件的前c条记录。
进一步,每组所述查询语句模板组包括:第一查询语句模板和第二查询语句模板。
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为该目标条数m与该待显示条数c之和。
该第二查询语句模板的查询语句用于执行以下操作:
从该前r条记录中,按照降序获取满足该查询条件,且该主键的键值与该前r条记录中指定记录内该主键的键值之间满足预设条件的前c条记录,该指定记录为该前r条记录按照升序排序时的最后一条记录。
如,r为10,那么前10条记录中第10即为该指定记录,而按照降序,则该第10条则为前10条记录中降序排序中的第一条记录。
可以理解的是,在数据记录不存在重复的情况下,该预设条件可以为主键的键值小于或等于该指定记录的主键的键值。
然而在实际应用中,当主键为多个时,很可能会出现某两个数据记录的主键的键值相同的情况下,在该种情况下,为了查询出前c条记录,则需要根据主键个数的不同,有不同的情况:
当所述主键个数为一个时,该主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,可以包括:
所述主键的键值小于或等于所述指定记录内所述主键的键值。
当所述主键包括第一主键和第二主键两个主键时,该主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,可以包括:
所述第一主键的键值等于所述指定记录的所述第一主键的键值且所述第二主键的键值小于等于所述第二主键的键值,或者,所述第一主键的键值小于所述指定记录的所述第一主键的键值;
当所述主键包括第一主键、第二主键和第三主键这三个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,可以包括:
第一主键的键值等于所述指定记录的第一主键的键值、第二主键的键值等于所述指定记录的第二主键的键值且第三主键的键值小于等于所述指定记录的第三主键的键值,或者,第一主键的键值等于所述指定记录的第一主键的键值且第二主键的键值小于所述指定记录的第二主键的键值,或者,所述第一主键的键值小于所述指定记录的第一主键的键值。
为了便于理解,下面分别以主键为一个、两个以及三个的情况,进行介绍:
1)、当主键个数为1个时,假设该主键列名为p1。
首先,根据起始的查询条数m和每页要显示的条数c,计算出第一次查询范围为m+c=r,按照升序获取满足查询条件w的前r条记录的主键内容,则,该第一查询语句模板可以为:“select TOP r p1 from A where w order by p1asc”。
其中,最后一条的主键p1的内容记为PK1。然后,按照降序获取满足查询条件w的前c条记录,同时满足主键列p1的值小于或等于PK1,则该第二查询语句模板可以为:“selectTOP c*from A where p1<=PK1 and w order by p1desc”。
2)、当主键个数为2个(即联合主键)时,假设该主键列名分别为p1、p2。
根据起始的查询条数m和每页要现实的条数c,计算出第一次查询范围为m+c=r,按照升序获取满足查询条件w的前r条记录的主键内容,则第一查询语句模板可以为“select TOP r p1,p2 from A where w order by p1 asc,p2asc”。
其中最后一条的主键第一列p1内容内容记为PK1,主键第二列p2内容记为PK2,然后,按照降序获取满足查询条件w的前c条记录,同时满足主键列p1的值等于PK1且p2的值小于等于PK2,或满足p1的值小于PK1,则第二查询语句模板可以为“select TOP c*from Awhere(((p1=PK1 and p2<=PK2)or p1<PK1)and w)order by p1 desc,p2 desc”。
3)、当主键个数为3个(即联合主键)时,假设该主键列名分别为p1、p2、p3。
根据起始的查询条数m和每页要现实的条数c,计算出第一次查询范围为m+c=r,按照升序获取满足查询条件w的前r条记录的主键内容,则第一查询语句模板可以为“select TOP r p1,p2,p3 from A where w order by p1 asc,p2 asc,p3asc”。
其中,最后一条的主键第一列p1内容记为PK1,主键第二列p2内容记为PK2,主键第三列p3记为PK3,然后,按照降序获取满足查询条件w的前c条记录,同时满足主键列p1的值等于PK1、主键列p2的值等于PK2且p3的值小于等于PK3,或满足p1的值等于PK1且p2的值小于PK2,或满足满足p1的值小于PK1,则第二查询语句模板可以为“select TOP c*from Awhere(((p1=PK1 and p2=PK2 and p3<=PK3)or(p1=PK1 and p2<PK2)or p1<PK1)andw)order by p1 desc,p2 desc,p3 desc”。
由于主键列数d大于3或小于1(即无主键)的情况在实际生产应用情况很少见,如存在可依例类推。
对应本申请的一种数据分页查询方法,本申请实施例还提供了一种数据分页查询装置。
参见图3,其示出了本申请一种数据分页查询装置一个实施例的组成结构示意图,本实施例的装置可以包括:
参数确定单元301,用于确定待查询的数据表当前的分页查询参数,所述分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;
主键确定单元302,用于确定所述数据表的主键以及所述主键的个数;
模板选取单元303,用于从预置的多组查询语句模板组中,确定出与所述主键的个数对应的目标查询语句模板组,其中,所述查询语句模板组中包括至少两条查询语句模板;
语句生成单元304,用于在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组;
数据查询单元305,用于通过在数据库中执行所述目标查询语句组,从所述数据表中查询出从所述目标条数开始的所述待显示条数个记录。
可选的,所述查询语句模板为使用TOP关键字的结构化查询语言SQL语句模板。
可选的,所述语句生成单元,包括:
计算子单元,用于计算目标条数与所述待显示条数相加所得的第一数值;
语句生成子单元,用于将所述第一数值写入到所述目标查询语句模板组中当前分页的结束条数所对应的数值,并向所述目标查询语句模板组的查询语句中写入所述查询条件、待显示条数以及所述主键。
可选的,在本申请实施例中预置的每组所述查询语句模板组包括:
第一查询语句模板和第二查询语句模板;
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为所述目标条数m与所述待显示条数c之和;
所述第二查询语句模板的查询语句用于执行以下操作:
从所述前r条记录中,按照降序获取满足所述查询条件,且所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件的前c条记录,所述指定记录为所述前r条记录按照升序排序时的最后一条记录。
对于装置实施例而言,由于其基本相应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,在没有超过本申请的精神和范围内,可以通过其他的方式实现。当前的实施例只是一种示范性的例子,不应该作为限制,所给出的具体内容不应该限制本申请的目的。例如,所述单元或子单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或多个子单元结合一起。另外,多个单元可以或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
另外,所描述系统和方法以及不同实施例的示意图,在不超出本申请的范围内,可以与其它系统,模块,技术或方法结合或集成。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种数据分页查询方法,其特征在于,所述方法包括:
确定待查询的数据表当前的分页查询参数,所述分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;
确定所述数据表的主键以及所述主键的个数;
从预置的多组查询语句模板组中,确定出与所述主键的个数对应的目标查询语句模板组,其中,所述查询语句模板组中包括至少两条查询语句模板;
在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组;
通过在数据库中执行所述目标查询语句组,从所述数据表中查询出从所述目标条数开始的所述待显示条数个记录;
每组所述查询语句模板组包括:
第一查询语句模板和第二查询语句模板;
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为所述目标条数m与所述待显示条数c之和;
所述第二查询语句模板的查询语句用于执行以下操作:
从所述前r条记录中,按照降序获取满足所述查询条件,且所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件的前c条记录,所述指定记录为所述前r条记录按照升序排序时的最后一条记录;
所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
当所述主键包括第一主键和第二主键两个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
所述第一主键的键值等于所述指定记录的所述第一主键的键值且所述第二主键的键值小于等于所述第二主键的键值,或者,所述第一主键的键值小于所述指定记录的所述第一主键的键值;
当所述主键包括第一主键、第二主键和第三主键这三个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
第一主键的键值等于所述指定记录的第一主键的键值、第二主键的键值等于所述指定记录的第二主键的键值且第三主键的键值小于等于所述指定记录的第三主键的键值,或者,第一主键的键值等于所述指定记录的第一主键的键值且第二主键的键值小于所述指定记录的第二主键的键值,或者,所述第一主键的键值小于所述指定记录的第一主键的键值。
2.根据权利要求1所述的方法,其特征在于,所述查询语句模板为使用TOP关键字的结构化查询语言SQL语句模板。
3.根据权利要求1所述的方法,其特征在于,所述在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组,包括:
计算目标条数与所述待显示条数相加所得的第一数值;
将所述第一数值写入到所述目标查询语句模板组中当前分页的结束条数所对应的数值,并向所述目标查询语句模板组的查询语句中写入所述查询条件、待显示条数以及所述主键。
4.根据权利要求1至3任一项所述的方法,其特征在于,在所述确定待查询的数据表当前的分页查询参数之前,还包括:
确定满足所述查询条件的所有记录的总条数;
基于所述总条数、预设的每个分页的显示条数以及所述当前起始查询的目标条数,确定当前分页待显示的待显示条数。
5.一种数据分页查询装置,其特征在于,包括:
参数确定单元,用于确定待查询的数据表当前的分页查询参数,所述分页查询参数包括:当前分页待显示的待显示条数、查询条件、当前起始查询的目标条数;
主键确定单元,用于确定所述数据表的主键以及所述主键的个数;
模板选取单元,用于从预置的多组查询语句模板组中,确定出与所述主键的个数对应的目标查询语句模板组,其中,所述查询语句模板组中包括至少两条查询语句模板;
语句生成单元,用于在所述目标查询语句模板组中待写入所述分页查询参数的位置写入所述分页查询参数,并在所述目标查询语句模板中待写入所述主键的位置写入所述主键,得到目标查询语句组;
数据查询单元,用于通过在数据库中执行所述目标查询语句组,从所述数据表中查询出从所述目标条数开始的所述待显示条数个记录;
每组所述查询语句模板组包括:
第一查询语句模板和第二查询语句模板;
其中,所述第一查询语句模板的查询语句用于执行以下操作:
按照升序获取满足所述查询条件的前r条记录的所有所述主键的键值,其中,r为所述目标条数m与所述待显示条数c之和;
所述第二查询语句模板的查询语句用于执行以下操作:
从所述前r条记录中,按照降序获取满足所述查询条件,且所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件的前c条记录,所述指定记录为所述前r条记录按照升序排序时的最后一条记录;
所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
当所述主键包括第一主键和第二主键两个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
所述第一主键的键值等于所述指定记录的所述第一主键的键值且所述第二主键的键值小于等于所述第二主键的键值,或者,所述第一主键的键值小于所述指定记录的所述第一主键的键值;
当所述主键包括第一主键、第二主键和第三主键这三个主键时,所述主键的键值与所述前r条记录中指定记录内所述主键的键值之间满足预设条件,包括:
第一主键的键值等于所述指定记录的第一主键的键值、第二主键的键值等于所述指定记录的第二主键的键值且第三主键的键值小于等于所述指定记录的第三主键的键值,或者,第一主键的键值等于所述指定记录的第一主键的键值且第二主键的键值小于所述指定记录的第二主键的键值,或者,所述第一主键的键值小于所述指定记录的第一主键的键值。
6.根据权利要求5所述的装置,其特征在于,所述查询语句模板为使用TOP关键字的结构化查询语言SQL语句模板。
7.根据权利要求5所述的装置,其特征在于,所述语句生成单元,包括:
计算子单元,用于计算目标条数与所述待显示条数相加所得的第一数值;
语句生成子单元,用于将所述第一数值写入到所述目标查询语句模板组中当前分页的结束条数所对应的数值,并向所述目标查询语句模板组的查询语句中写入所述查询条件、待显示条数以及所述主键。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610720954.9A CN106227894B (zh) | 2016-08-24 | 2016-08-24 | 一种数据分页查询方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610720954.9A CN106227894B (zh) | 2016-08-24 | 2016-08-24 | 一种数据分页查询方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106227894A CN106227894A (zh) | 2016-12-14 |
CN106227894B true CN106227894B (zh) | 2019-11-26 |
Family
ID=57555167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610720954.9A Active CN106227894B (zh) | 2016-08-24 | 2016-08-24 | 一种数据分页查询方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106227894B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107016045A (zh) * | 2017-02-17 | 2017-08-04 | 阿里巴巴集团控股有限公司 | 一种分页数据查询的方法及装置 |
CN107622091B (zh) * | 2017-08-23 | 2020-11-13 | 创新先进技术有限公司 | 一种数据库查询方法和装置 |
CN107992516A (zh) * | 2017-10-27 | 2018-05-04 | 平安科技(深圳)有限公司 | 电子装置、数据查询的方法及存储介质 |
CN108052521B (zh) * | 2017-11-01 | 2022-04-22 | 平安科技(深圳)有限公司 | 协调数据显示方法、应用服务器及存储介质 |
CN110019212B (zh) * | 2017-11-29 | 2021-06-18 | 杭州海康威视数字技术股份有限公司 | 一种数据处理方法、装置及数据库服务器 |
CN110019307B (zh) * | 2017-12-28 | 2023-09-01 | 阿里巴巴集团控股有限公司 | 数据处理方法及装置 |
CN109344197B (zh) * | 2018-09-13 | 2021-01-26 | 广州帷策智能科技有限公司 | 基于大数据的分页下载方法和装置 |
CN109918594B (zh) * | 2019-01-25 | 2023-12-05 | 深圳市元征科技股份有限公司 | 一种信息显示方法及装置 |
CN109857366B (zh) * | 2019-02-20 | 2021-06-22 | 武汉轻工大学 | 基于外存的插入排序方法、系统、设备及存储介质 |
CN110569259A (zh) * | 2019-07-26 | 2019-12-13 | 苏宁云计算有限公司 | 一种大批量数据的处理方法及装置 |
CN112445833B (zh) * | 2019-08-30 | 2024-06-28 | 普天信息技术有限公司 | 一种分布式数据库的数据分页查询方法、装置和系统 |
CN112347077A (zh) * | 2020-11-06 | 2021-02-09 | 北京神州数字科技有限公司 | 一种数据查询方法 |
CN113590623B (zh) * | 2021-07-28 | 2024-08-06 | 上海万物新生环保科技集团有限公司 | 一种用于数据深分页查询的方法、装置及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216840A (zh) * | 2008-01-21 | 2008-07-09 | 金蝶软件(中国)有限公司 | 一种数据查询方法和一种数据查询系统 |
CN103399952A (zh) * | 2013-08-20 | 2013-11-20 | 长沙云宁信息技术有限公司 | 一种基于关键词的关系数据库检索系统及方法 |
CN103530378A (zh) * | 2013-10-15 | 2014-01-22 | 福建榕基软件股份有限公司 | 数据分页查询与数据库的构建的方法与装置 |
CN103886022A (zh) * | 2014-02-24 | 2014-06-25 | 上海上讯信息技术股份有限公司 | 一种基于主键字段进行分页查询的查询设备及其方法 |
-
2016
- 2016-08-24 CN CN201610720954.9A patent/CN106227894B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101216840A (zh) * | 2008-01-21 | 2008-07-09 | 金蝶软件(中国)有限公司 | 一种数据查询方法和一种数据查询系统 |
CN103399952A (zh) * | 2013-08-20 | 2013-11-20 | 长沙云宁信息技术有限公司 | 一种基于关键词的关系数据库检索系统及方法 |
CN103530378A (zh) * | 2013-10-15 | 2014-01-22 | 福建榕基软件股份有限公司 | 数据分页查询与数据库的构建的方法与装置 |
CN103886022A (zh) * | 2014-02-24 | 2014-06-25 | 上海上讯信息技术股份有限公司 | 一种基于主键字段进行分页查询的查询设备及其方法 |
Non-Patent Citations (1)
Title |
---|
数据库分页SQL语句;wzgjingui;《百度文库》;20121220;"SqlServer数据库中的分页语句"部分的内容 * |
Also Published As
Publication number | Publication date |
---|---|
CN106227894A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106227894B (zh) | 一种数据分页查询方法和装置 | |
EP3602351B1 (en) | Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps | |
US5878409A (en) | Method and apparatus for implementing partial declustering in a parallel database system | |
CN103678408B (zh) | 一种查询数据的方法及装置 | |
CN104182405B (zh) | 一种连接查询方法及装置 | |
US9239741B2 (en) | System and method for flexible distributed massively parallel processing (MPP) | |
CN105550225B (zh) | 索引构建方法、查询方法及装置 | |
CN108241627A (zh) | 一种异构数据存储查询方法和系统 | |
CN107402926A (zh) | 一种查询方法以及查询设备 | |
CN110399368A (zh) | 一种数据操作方法及装置 | |
CN103823846A (zh) | 一种基于图论的大数据存储及查询方法 | |
CN106776848A (zh) | 一种数据库查询方法及装置 | |
CN113779349A (zh) | 数据检索系统、装置、电子设备和可读存储介质 | |
CN104239470A (zh) | 一种面向分布式环境的空间数据复合处理系统和方法 | |
CN111400301B (zh) | 一种数据查询方法、装置及设备 | |
CN110019380B (zh) | 一种数据查询方法、装置、服务器及存储介质 | |
US8145626B2 (en) | Method and system for data processing using multidimensional filtering | |
CN104714973A (zh) | 一种处理查询语句的方法和装置 | |
CN109710630A (zh) | 异构数据源的查询方法及装置 | |
CN106909647B (zh) | 一种数据检索方法及装置 | |
CN108804580A (zh) | 一种在联邦型rdf数据库中查询关键字的方法 | |
CN102609455A (zh) | 一种实现汉语同音字检索的方法 | |
CN110297843A (zh) | 用于b/s系统的数据查询方法及系统、终端 | |
CN109992630B (zh) | 数据模型匹配方法和装置 | |
CN112527847A (zh) | 数据排序方法、装置、电子介质及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |