1.本技术涉及大数据领域,特别涉及一种数据查询方法、装置、设备及介质。
背景技术:2.联机服务往往对请求时间有一定要求,要求后台需在一定时间内返回请求结果。举例来说,在需要将场景系统中的一支联机交易作为报表查询导出时,具体功能为根据查询条件查询相关数据(模糊查询)写入excel中,并下载excel文件。由于数据量较大,查询、写入excel、下载等方面均十分耗时,容易发生系统超时问题。通过联机请求生成报表往往比较耗时,联机请求生成报表包括两个方面,一方面从数据库中查询数据并返回到后台,另一方面将查询回来的数据写到excel表格中并返回给前端。在现有技术中,往往使用数据库提供的like关键字进行模糊查询,匹配数据库数据,而数据库使用like时往往不走索引,需要进行全表扫描查询,数据量大时将严重影响查询效率,查询速度慢。
技术实现要素:3.有鉴于此,本技术的目的在于提供一种数据查询方法、装置、设备及介质,提高数据查询速度。其具体方案如下:
4.第一方面,本技术提供了一种数据查询方法,包括:
5.对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;
6.获取用户输入的查询条件,所述查询条件包括目标字符串;
7.根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;
8.根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。
9.可选地,所述根据所述目标字符串的字符数查找所述索引得到目标索引,包括:
10.利用二分查找算法,根据所述目标字符串的字符数查找所述索引得到目标索引。
11.可选地,在所述第一字符串的字符数为3个,且字符的种类为3种时,所述第二字符串的数量为6个。
12.可选地,所述索引按照字符数进行分类存储;所述根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引,包括:
13.根据所述目标字符串的字符数和字符内容查找目标索引集合得到目标索引;所述目标索引集合包括具有相同字符数的索引。
14.可选地,所述对数据表中至少一个属性建立索引,包括:
15.基于全文搜索引擎对数据表中至少一个属性建立索引。
16.第二方面,本技术实施例还提供了一种数据查询装置,包括:
17.建立单元,用于对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;
18.第一获取单元,用于获取用户输入的查询条件,所述查询条件包括目标字符串;
19.查找单元,用于根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;
20.第二获取单元,用于根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。
21.可选地,所述查找单元,用于:
22.利用二分查找算法,根据所述目标字符串的字符数查找所述索引得到目标索引。
23.可选地,在所述第一字符串的字符数为3个,且字符的种类为3种时,所述第二字符串的数量为6个。
24.第三方面,本技术实施例还提供了一种计算机设备,所述计算机设备包括处理器以及存储器:
25.所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
26.所述处理器用于根据所述程序代码中的指令执行所述的方法。
27.第四方面,本技术实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行所述的方法。
28.本技术实施例提供了一种数据查询方法、装置、设备及介质,对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;获取用户输入的查询条件,所述查询条件包括目标字符串;根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。可见,在本技术实施例中,根据字符数量对字符串进行连续切割,根据切割后得到的字符串对数据表建立索引,根据查询条件查找到目标索引,进而根据目标索引查找到数据表主键,再利用主键从关系型数据库中查找到完整的记录信息即目标数据,这样,通过建立索引来优化数据查询方式,将模糊匹配转为精确匹配,可以避免关系型数据库全表扫描,能够加快数据查询速度,从而加快报表生成速度。
附图说明
29.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
30.图1示出了本技术实施例提供的一种数据查询方法的流程示意图;
31.图2为本技术实施例提供的一种数据查询装置的结构框图。
具体实施方式
32.为使本技术的上述目的、特征和优点能够更加明显易懂,下面结合附图对本技术的具体实施方式做详细的说明。
33.在下面的描述中阐述了很多具体细节以便于充分理解本技术,但是本技术还可以采用其它不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本技术内涵的情况下做类似推广,因此本技术不受下面公开的具体实施例的限制。
34.基于以上技术问题,本技术实施例提供了一种数据查询方法、装置、设备及介质,对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;获取用户输入的查询条件,所述查询条件包括目标字符串;根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。可见,在本技术实施例中,根据字符数量对字符串进行连续切割,根据切割后得到的字符串对数据表建立索引,根据查询条件查找到目标索引,进而根据目标索引查找到数据表主键,再利用主键从关系型数据库中查找到完整的记录信息即目标数据,这样,通过建立索引来优化数据查询方式,将模糊匹配转为精确匹配,可以避免关系型数据库全表扫描,能够加快数据查询速度,从而加快报表生成速度。
35.为了便于理解,下面结合附图对本技术实施例提供的一种数据查询方法、装置、设备及介质进行详细的说明。
36.参考图1所示,为本技术实施例提供的一种数据查询方法的流程示意图,该方法可以包括以下步骤。
37.s101,对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串,对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立。
38.在本技术实施例中,可以在每天晚上批量加载数据后,对数据库建立索引。在批量加载数据之后,数据库会进行更新,可以对更新后的数据库建立索引,即可以每天定时更新索引。
39.数据库用于存储数据,数据库可以是关系型数据库,关系型数据库中可以包括多个数据表,每个数据表中包括至少一个属性,比如姓名,一个属性对应至少一个第一字符串,比如,在属性为姓名时,属性值即第一字符串可以为tommy、tom,按照表中的字段数据进行切割记录属性值,对所述第一字符串按照字符数进行连续切割得到多个第二字符串,然后根据第二字符串建立索引。
40.具体地,根据数据表某列数据进行文本切割,将切割结果作为索引的键,也就是如上所说的第二字符串。比如,学生信息表中某一记录的id属性(主键)取值为10,姓名属性取值为“tommy”作为第一字符串,则第一字符串tommy的长度为x,此时x=5,则将把该字符串切割成字符数为1-5的第二字符串,字符数为1时,第二字符串可以为“t”、“o”、“m”、“y”;字
符数为2时,第二字符串可以为“to”、“om”、“mm”、“my”;字符数为3时,第二字符串可以为“tom”、“omm”、“mmy”;字符数为4时,第二字符串可以为“tomm”、“ommy”;字符数为5时,第二字符串为“tommy”。根据第二字符串来建立索引,索引内容为数据表中主键的键值,比如为10。
41.此外,若针对不同的第一字符串切割会得到相同的第二字符串,则可以对相同的字符串进行索引合并。例如,如果学生信息表某一记录的id属性(主键)取值为15,姓名属性取值为“tom”,则按照字符数切割时,在字符数为1时,第二字符串可以为“t”、“o”、“m”,可以发现,对“tommy”和tom”进行字符切割,可以得到相同的字符串“t”、“o”、“m”,则,可以对字符串“t”进行索引合并,字符串“t”对应的索引内容包括10和15,同理,字符串“o”对应的索引内容也包括10和15,字符串“m”对应的索引内容也包括10和15。在本技术实施例中,在所述第一字符串的字符数为3个,且字符的种类为3种时,所述第二字符串的数量为6个。比如,第一字符串为“tom”,则第二字符串的数量为6个,分别为“t”、“o”、“m”、“to”、“om”、“tom”。
42.还比如,在第一字符串为“tommy”时,通过上述的切割之后,字符数为1时,得到4种切割结果,即4个第二字符串;字符数为2时,得到4个第二字符串;字符数为3时,得到3个第二字符串;字符数为4时,得到2个第二字符串;字符数为5时,得到1个第二字符串,总共可以得到14种切割结果,即14个第二字符串。
43.在本技术实施例中,索引可以按照字符数进行分类存储,也可以按照字符种类进行存储。在索引按照字符数进行分类存储时,所述根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引,包括:根据所述目标字符串的字符数和字符内容查找目标索引集合得到目标索引;所述目标索引集合包括具有相同字符数的索引。
44.具体地,可以按照字符数对索引进行分类存储,比如,在第一索引集合中,包括全部的字符数为1的索引,有关“t”、“o”、“m”、“y”的索引,在第二索引集合中包括全部的字符数为4的索引,有关“tomm”、“ommy”的索引。
45.在本技术实施例中,所述对数据表中至少一个属性建立索引,包括:基于全文搜索引擎(lucene)对数据表中至少一个属性建立索引具体地,可以基于lucene自建一套索引,并将索引按照字符数进行分类。
46.在本技术实施例中,索引可以使用b+树的结构来存储,叶子节点(最下层)存储关键字信息即属性值,以及对应的全部数据记录即目标数据,非叶子节点存储指针信息。
47.s102,获取用户输入的查询条件,所述查询条件包括目标字符串。
48.在本技术实施例中,可以获取用户输入的查询条件,查询条件包括目标字符串。具体地,用户输入查询条件,发送请求,后台接收到请求,获取查询条件中目标字符串的长度。
49.s103,根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引存储有主键。
50.在本技术实施例中,所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同,所述目标索引存储有主键。具体地,首先根据目标字符串的字符数查找包括相同字符数的索引集合,比如,目标字符串为“ommy”,字符数为4个,则确定索引集合为第二索引集合,在第二索引集合中包括有关“ommy”、“tomm”的索引,然后,在第二索引集合中去匹配字符内容是否为“ommy”,则可以确定出目标索引为有关“ommy”的索引,对应的主键键值为10。
51.在本技术实施例中,所述根据所述目标字符串的字符数查找所述索引得到目标索引,包括:利用二分查找算法,根据所述目标字符串的字符数查找所述索引得到目标索引。具体地,查询时,首先对查询字段长度选择对应类别的索引,利用二分查找算法对索引数据进行完全匹配,查找出主键后,将查询得到的主键作为查询条件再对数据库进行查找。
52.s104,根据所述主键从所述数据库中获取目标数据,以便将所述目标数据写入excel表格中。
53.在本技术实施例中,可以根据获取到的记录主键从数据表获取目标数据,并写入excel表格中,再由后台传输给前端,生成报表文件。具体地,根据获取的主键,生成数据库查询语句,根据数据表主键查询目标数据。
54.在本技术实施例中,报表数据来源为关系型数据库中的某一个数据表,可以根据用户的查询条件,将数据表中相关数据导出形成报表。
55.本技术实施例提供了一种数据查询方法,对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;获取用户输入的查询条件,所述查询条件包括目标字符串;根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。可见,在本技术实施例中,根据字符数量对字符串进行连续切割,根据切割后得到的字符串对数据表建立索引,根据查询条件查找到目标索引,进而根据目标索引查找到数据表主键,再利用主键从关系型数据库中查找到完整的记录信息即目标数据,这样,通过建立索引来优化数据查询方式,将模糊匹配转为精确匹配,可以避免关系型数据库全表扫描,能够加快数据查询速度,从而加快报表生成速度。
56.基于以上数据查询方法,本技术实施例还提供了一种数据查询装置,参考图2所示,为本技术实施例提供的一种数据查询装置的结构框图,该装置可以包括:
57.建立单元100,用于对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;
58.第一获取单元200,用于获取用户输入的查询条件,所述查询条件包括目标字符串;
59.查找单元300,用于根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;
60.第二获取单元400,用于根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。
61.可选地,所述查找单元,用于:
62.利用二分查找算法,根据所述目标字符串的字符数查找所述索引得到目标索引。
63.可选地,在所述第一字符串的字符数为3个,且字符的种类为3种时,所述第二字符串的数量为6个。
64.本技术实施例提供了一种数据查询装置,包括建立单元,用于对数据表中至少一个属性建立索引;所述数据表中的一个属性对应至少一个第一字符串;对所述第一字符串按照字符数进行连续切割得到多个第二字符串,所述索引是根据所述第二字符串建立;第一获取单元,用于获取用户输入的查询条件,所述查询条件包括目标字符串;查找单元,用于根据所述目标字符串的字符数和字符内容查找所述索引得到目标索引;所述目标索引中的第二字符串的字符数和字符内容,与所述目标字符串的字符数和字符内容相同;所述目标索引存储有主键;第二获取单元,用于根据所述主键从所述数据表中获取目标数据,以便将所述目标数据写入excel表格中。可见,在本技术实施例中,根据字符数量对字符串进行连续切割,根据切割后得到的字符串对数据表建立索引,根据查询条件查找到目标索引,进而根据目标索引查找到数据表主键,再利用主键从关系型数据库中查找到完整的记录信息即目标数据,这样,通过建立索引来优化数据查询方式,将模糊匹配转为精确匹配,可以避免关系型数据库全表扫描,能够加快数据查询速度,从而加快报表生成速度。
65.又一方面,本技术实施例提供了一种计算机设备,所述计算机设备包括处理器以及存储器:
66.所述存储器用于存储程序代码,并将所述程序代码传输给所述处理器;
67.所述处理器用于根据所述程序代码中的指令执行上述实施例提供的数据查询方法。
68.该计算机设备可以包括终端设备或服务器,前述的数据查询装置可以配置在该计算机设备中。
69.又一方面,本技术实施例还提供了一种存储介质,所述存储介质用于存储计算机程序,所述计算机程序用于执行上述实施例提供的数据查询方法。
70.另外,本技术实施例还提供了一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例提供的数据查询方法。
71.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令硬件来完成,前述程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质可以是下述介质中的至少一种:只读存储器(英文:read-only memory,缩写:rom)、ram、磁碟或者光盘等各种可以存储程序代码的介质。
72.需要说明的是,本发明提供的一种数据查询方法、装置、设备及介质可用于大数据领域或金融领域。上述仅为示例,并不对本发明提供的一种数据查询方法、装置、设备及介质的应用领域进行限定。
73.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其它实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。
74.以上所述仅是本技术的优选实施方式,虽然本技术已以较佳实施例披露如上,然而并非用以限定本技术。任何熟悉本领域的技术人员,在不脱离本技术技术方案范围情况下,都可利用上述揭示的方法和技术内容对本技术技术方案做出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本技术技术方案的内容,依据本技术的
技术实质对以上实施例所做的任何的简单修改、等同变化及修饰,均仍属于本技术技术方案保护的范围内。