数据库快速查询方法及系统技术方案

技术编号:38661640 阅读:14 留言:0更新日期:2023-09-02 22:44
本发明专利技术公开一种数据库快速查询方法及系统,该方法包括:根据间隔数,对数据库的原始业务表的主键做逻辑分段,以获得若干定位标志;创建区间记录表,区间记录表按照定位标志在原始业务表中的先后循序记录定位标志;当数据库驱动的前端分页查询时,根据目标页面的数据在原始业务表中所处位置生成与区间记录表的序列号对应的查询数;基于查询数查询区间记录表,以获得相应的定位标志时,从定位标志所处位置开始按序扫描原始业务表,以获得与目标页面相对应的数据。根据上述方案,对任一页面进行分页查询时,无需从头开始按序扫描,最大扫描量也仅为预设的间隔数,从而最大限度降低获取与目标页面所对应的数据所对应的扫描时间,提升查询效率。提升查询效率。提升查询效率。

【技术实现步骤摘要】
数据库快速查询方法及系统


[0001]本专利技术涉及数据库查询
,尤其涉及一种数据库快速查询方法及系统。

技术介绍

[0002]随着计算机技术的不断发展,现如今,各行各业都有自己的软件系统,以实现多业务的统筹,极大提升工作效率。对于软件系统来说,在交付使用后,业务主要集中在数据录入和功能查询上,删除数据的情况较少。随着软件系统使用时间的增加,存量数据越来越多,此时用户访问会遇到页面卡顿,响应迟钝等问题。即软件系统面临性能瓶颈,需要优化。
[0003]针对大流量数据的系统,当前主流的优化方案是分布式分库分表。但此方案改动大,开发及部署成本高。
[0004]造成这种现象的根本原因是:在使用数据库做分页查询时,随着页码的逐渐增大,性能越来越差,表列数越多,性能问题越明显。
[0005]例如,在mysql中,当需要从数据库取前端第1页的10条数据时,执行语句为:select*from表order by id limit 0,10,即从第0条开始读取10条数据。然后,需要从数据库取前端第10000001页的10条数据时,执行语句为:select*from表order by id limit 100000000,10,即先从第0条开始扫描,扫描100000000条数据,然后从100000001条数据开始读取10条数据。
[0006]由此可知,页码越大,分页读取数据的起始位置就越大,需要扫描的数据就越多,消耗时间就越长,导致性能就越差。
[0007]为解决庞大数据库的查询效率问题,现有技术中一般采用下述三种方式进行优化。
[0008]一是,扫描前,首先获取前一次查询结果的最后一条记录位置,然后定位该记录,在此记录的基础上做分页,减小分页的起始位置来减小扫描量。但该方案需要寻找上次查询的最后一条记录位置,不适用直接跳转到某个随机页码的场景。
[0009]二是,先定位主键,再根据主键查具体分页内容的方案,也即,首先从数据库取第N页的若干条信息,但取值时只取主键键值,然后根据已获取主键去查询完整信息,该方案仍然避免不了扫描大量数据的问题,仍然较慢。
[0010]三是,将大表拆分成小表,但是,该方案开发维护成本高,不能快速解决问题。
[0011]因此,需要对数据库的查询方法进行改进,以有效提升查询效率。

技术实现思路

[0012]本专利技术的目的是提供一种对于数据量庞大的数据库,有效提升查询效率的数据库快速查询方法及系统。
[0013]为实现上述目的,本专利技术公开了一种数据库快速查询方法,其包括:
[0014]根据间隔数,对数据库的原始业务表的主键做逻辑分段,以获得若干数据段和与每一所述数据段相对应的若干定位标志,所述定位标志为相应数据段最后一条数据的主键
键值;
[0015]创建区间记录表,所述区间记录表按照若干所述定位标志在所述原始业务表中的先后循序记录所述所述定位标志;
[0016]当所述数据库驱动的前端分页查询时,根据目标页面所对应的数据在所述原始业务表中所处位置生成与所述区间记录表的序列号对应的查询数;
[0017]基于所述查询数查询所述区间记录表;
[0018]当从所述区间记录表中查询到相应的所述定位标志时,从所述定位标志所处位置开始按序扫描所述原始业务表,以获得与所述目标页面相对应的数据;
[0019]当从所述区间记录表中未查询到相应的所述定位标志时,从所述原始业务表的起始位置开始扫描,以获得与所述目标页面相对应的数据。
[0020]较佳地,所述间隔数为与所述数据库驱动的每一前端分页所包括的数据条个数的公倍数;
[0021]所述区间记录表包括序列键和定位键,所述序列键包括一列连续递增的数字序列,所述定位键包括若干分别与每一所述数字序列相对应的所述定位标志;
[0022]所述查询数的获取方法包括:
[0023]根据目标页面的页号计算该目标页面之前所有页面所包括的数据条个数的数据量;
[0024]计算所述数据量与所述间隔数的比值,并分离出所述比值中的整数;
[0025]将所述整数用作所述查询数;
[0026]将所述查询数作为所述序列键的键值查询所述区间记录表,以查询相应的所述定位标志。
[0027]较佳地,根据所述定位标志查询所述原始业务表的方法包括:
[0028]分离出所述比值中的余数;
[0029]从查询所述区间记录表获得的所述定位标志开始扫描所述原始业务表,扫描数据的条数为所述余数,以获得与所述目标页面相对应的起始数据,从该起始数据处开始获取与该目标页面相对应的数据。
[0030]较佳地,当所述原始业务表中的数据发生变化时,且数据变化量大于所述间隔数时,所述区间记录表中记录的数据自动更新,且所述间隔数根据所述原始业务表中数据条的总数的变化自动调整。
[0031]本专利技术还公开一种数据库快速查询系统,其包括:
[0032]逻辑分隔模块,其用于根据间隔数,对数据库的原始业务表的主键做逻辑分段,以获得若干数据段和与每一所述数据段相对应的若干定位标志,所述定位标志为相应数据段最后一条数据的主键键值;
[0033]数据表创建模块,其用于创建区间记录表,所述区间记录表按照若干所述定位标志在所述原始业务表中的先后循序记录所述所述定位标志;
[0034]查询数生成模块,其用于当所述数据库驱动的前端分页查询时,根据目标页面所对应的数据在所述原始业务表中所处位置生成与所述区间记录表的序列号对应的查询数;
[0035]查询模块,其用于基于所述查询数查询所述区间记录表;
[0036]扫描模块,其用于当所述查询模块从所述区间记录表中查询到相应的所述定位标
志时,从查询所述区间记录表获得的所述定位标志所处位置开始按序扫描所述原始业务表,以获得与所述目标页面相对应的数据,而当所述查询模块未查询到相应的所述定位标志时,从所述原始业务表的起始位置开始扫描,以获得与所述目标页面相对应的数据。
[0037]较佳地,所述间隔数为与所述数据库驱动的每一前端分页所包括的数据条个数的公倍数;
[0038]所述区间记录表包括序列键和定位键,所述序列键包括一列连续递增的数字序列,所述定位键包括若干分别与每一所述数字序列相对应的所述定位标志;
[0039]所述查询模块包括第一计算模块、第二计算模块以及执行模块;
[0040]所述第一计算模块,用于根据目标页面的页号计算该目标页面之前所有页面所包括的数据条个数的数据量;
[0041]所述第二计算模块,用于计算所述数据量与所述间隔数的比值,并分离出所述比值中的用作所述查询数的整数;
[0042]所述执行模块,用于将所述查询数作为所述序列键的键值查询所述区间记录表,以查询相应的所述定位标志。
[0043]较佳地,所述第二计算模块还分离出所述比值中的余数;
[0044]所述扫描模块从查询所述区间记录表获得的所述定位标本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据库快速查询方法,其特征在于,包括:根据间隔数,对数据库的原始业务表的主键做逻辑分段,以获得若干数据段和与每一所述数据段相对应的若干定位标志,所述定位标志为相应数据段最后一条数据的主键键值;创建区间记录表,所述区间记录表按照若干所述定位标志在所述原始业务表中的先后循序记录所述所述定位标志;当所述数据库驱动的前端分页查询时,根据目标页面所对应的数据在所述原始业务表中所处位置生成与所述区间记录表的序列号对应的查询数;基于所述查询数查询所述区间记录表;当从所述区间记录表中查询到相应的所述定位标志时,从所述定位标志所处位置开始按序扫描所述原始业务表,以获得与所述目标页面相对应的数据;当从所述区间记录表中未查询到相应的所述定位标志时,从所述原始业务表的起始位置开始扫描,以获得与所述目标页面相对应的数据。2.根据权利要求1所述的数据库快速查询方法,其特征在于,所述间隔数为与所述数据库驱动的每一前端分页所包括的数据条个数的公倍数;所述区间记录表包括序列键和定位键,所述序列键包括一列连续递增的数字序列,所述定位键包括若干分别与每一所述数字序列相对应的所述定位标志;所述查询数的获取方法包括:根据目标页面的页号计算该目标页面之前所有页面所包括的数据条个数的数据量;计算所述数据量与所述间隔数的比值,并分离出所述比值中的整数;将所述整数用作所述查询数;将所述查询数作为所述序列键的键值查询所述区间记录表,以查询相应的所述定位标志。3.根据权利要求2所述的数据库快速查询方法,其特征在于,根据所述定位标志查询所述原始业务表的方法包括:分离出所述比值中的余数;从查询所述区间记录表获得的所述定位标志开始扫描所述原始业务表,扫描数据的条数为所述余数,以获得与所述目标页面相对应的起始数据,从该起始数据处开始获取与该目标页面相对应的数据。4.根据权利要求1所述的数据库快速查询方法,其特征在于,当所述原始业务表中的数据发生变化时,且数据变化量大于所述间隔数时,所述区间记录表中记录的数据自动更新,且所述间隔数根据所述原始业务表中数据条的总数的变化自动调整。5.一种数据库快速查询系统,其特征在于,包括:逻辑分隔模块,其用于根据间隔数,对数据库的原始业务表的主键做逻辑分段,以获得若干数据段和与每一所述数据段相对应的若干定位标志,所述定位标志为相应数据段最后一条数据的主键键值;数据表创建模块,其用于创建区间记录表,所述区间记录表按照若干所述定位标志在所述原始业务...

【专利技术属性】
技术研发人员:孙望万振华王颉李华董燕
申请(专利权)人:深圳开源互联网安全技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1