CN115658728B - 一种查询方法、电子设备及存储介质 - Google Patents
一种查询方法、电子设备及存储介质 Download PDFInfo
- Publication number
- CN115658728B CN115658728B CN202211435800.7A CN202211435800A CN115658728B CN 115658728 B CN115658728 B CN 115658728B CN 202211435800 A CN202211435800 A CN 202211435800A CN 115658728 B CN115658728 B CN 115658728B
- Authority
- CN
- China
- Prior art keywords
- query
- feature
- fields
- query request
- configuration
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种查询方法、电子设备及存储介质。电子设备可以接收第一查询请求,第一查询请求包括n个查询字段,第一查询请求用于请求查询与n个查询字段匹配的查询内容。响应于第一查询请求,电子设备获取预设的SQL配置表中的多个头表数据,生成多个头表数据的第一特征,以及生成多个第二特征。每个第二特征是基于n个查询字段生成的。电子设备遍历多个第二特征,从多个第一特征中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果。通过这种方式,电子设备可以提高数据查询的效率。
Description
技术领域
本申请涉及数据分析技术领域,尤其涉及一种查询方法、电子设备及存储介质。
背景技术
现今是数据的时代,数据正在爆炸性增长。数据的重要性已毋庸置疑,数据的应用也渗入至各行各业。数据查询作为数据一个重要的应用方面,相比于传统的查询方式,具有数据量大、查询分析复杂等特点。
举例来说,针对一种类型的产品而言,该类型的每个产品会配置有多个维度的信息,如产品线、产品系列、产品型号等维度的信息。在查询该类型产品中符合预设条件的产品的情况下,可以通过记录该类型产品的头表数据的配置表,查询匹配预设条件的产品。
但是,由于目前需求越来越多样化,头表数据的维度也越来越多。查询符合预设条件的一条数据需要消耗大量的计算资源,查询效率较低。
发明内容
有鉴于此,本申请提供了一种查询方法、电子设备及存储介质,可以减少数据查询的消耗,提高数据查询的效率。
第一方面,本申请提供一种查询方法,电子设备接收第一查询请求,第一查询请求包括n个查询字段,用于请求查询与n个查询字段匹配的查询内容。响应于第一查询请求,电子设备获取SQL配置表中存储的多个头表数据。每个头表数据包括n个配置字段以及n个配置字段对应的查询内容。第一查询请求的n个查询字段与头表数据的n个配置字段一一对应。电子设备可以通过第一查询请求所包括的至少一个查询字段与对应头表数据的匹配字段的匹配结果,生成多个第一特征。电子设备还可以生成第一查询请求对应的多个第二特征,每个第二特征用于规定查询内容对应的多个配置字段与第一查询请求包括的多个查询字段的匹配规则。进一步地,电子设备可以遍历多个第二特征,从多个第一特征中查找与对应第二特征相同的第一特征。若查找到与第二特征相同的第一特征,电子设备可以将该第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果。
通过这种方式,电子设备在数据查询时,获取SQL配置表中的头表数据即可,减少查询SQL配置表中的从属数据的情况。如此,不仅可以减少SQL配置表中映射表的配置,节省SQL数据库的存储空间,还可以提高数据查询的效率。同时,电子设备通过特征匹配的方式查询数据,可以减少SQL数据库的访问次数,提高数据查询过程中SQL数据库的性能。
在第一方面的一种可能的实现方式中,上述匹配结果为:n个查询字段与n个配置字段不匹配,或者n个第一特征值;n个第一特征值与n个查询字段、n个配置字段一一对应。每个第一特征值用于表征n个查询字段与n个配置字段中对应字段的匹配结果。
在第一方面的另一种可能的实现方式中,上述第一特征值为第一值或者第二值。其中,若n个配置字段中的第一配置字段为预设目标值,则第一配置字段对应的第一特征值为所述第一值。若第一配置字段包括n个查询字段中对应查询字段,则第一配置字段对应的第一特征值为所述第二值。第一配置字段为n个配置字段中的任一个配置字段。
相应地,每个第二特征包括n个第二特征值,n个第二特征值与查询内容对应的n个配置字段、n个查询字段一一对应。第二特征值为第一值或者所述第二值。其中,第二特征值为第一值,用于指示不要求查询内容对应的n个配置字段中对应配置字段与n个查询字段中对应查询字段匹配。第二特征值为第二值,用于指示要求查询内容对应的n个配置字段中对应配置字段与n个查询字段中对应查询字段匹配。
通过这种方式,第二特征的第二特征值与第一特征的第一特征值具有相同的可取值。通过第一特征表征头表数据与第一查询请求的匹配结果,通过第二特征对服务器查询到的头表数据的n个配置字段进行指示,服务器可以根据多个第一特征和多个第二特征查询数据,得到满足条件查询内容。可以减少服务器在数据查询过程中的匹配次数,提高数据查询的效率。
在第一方面的另一种可能的实现方式中,上述生成多个第二特征可包括:生成第一查询请求对应的第二特征。其中,第一查询请求对应的第二特征中n个第二特征值均为第二值。生成多个第二查询请求对应的第二特征。其中,每个第二查询请求对应的第二特征中至少一个第二特征值为所述第一值、其他第二特征值为所述第二值。
这样,服务器可以根据第一查询请求对应的第二特征进行精确查询,根据第一查询请求对应的第二特征进行非精确查询,从而可以满足数据查询的多样化查询场景。
在第一方面的另一种可能的实现方式中,每个第二查询请求对应的第二特征中一个第二特征值为第一值、其他第二特征值为第二值。上述生成多个第二查询请求对应的第二特征,包括:针对所述n个查询字段中各个查询字段,分别执行:将第一查询请求对应的第二特征中一个查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征。
在第一方面的另一种可能的实现方式中,上述遍历多个第二特征,从多个第一特征中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果包括:
从多个第一特征中查找与第一查询请求对应的第二特征相同的第一特征。若查找到与第一查询请求对应的第二特征相同的第一特征,则将查找到的第一特征对应的头表数据中的查询内容作为查询结果。若未查找到与第一查询请求对应的第二特征相同的第一特征,则按照多个第二查询请求对应的第二特征中、设置为第一值的第二特征值对应的查询字段的优先级由高到低的顺序,从多个第一特征中依次查找与每个第二查询请求对应的第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为所述查询结果。
通过这种方式,查询到头表数据中n个配置字段尽可能与第一查询请求中n个查询字段相匹配,从而可以为用户提供最适配的查询内容。
在第一方面的另一种可能的实现方式中,在接收第一查询请求之前,还包括:从SQL数据库中读取SQL配置表中的所述多个头表数据,并将多个头表数据缓存在预设的缓存空间中。上述响应于第一查询请求,获取预设结构化查询语言SQL配置表中的多个头表数据包括:响应于第一查询请求,从预设的缓存空间获取多个头表数据。
这样,服务器在查询第一查询请求所请求查询的查询内容的情况下,访问预设的缓存空间即可。如此,可以减少数据查询中服务器访问SQL数据库的次数,减小数据查询过程中对SQL数据库性能的影响。
在第一方面的另一种可能的实现方式中,在将查找到的第一特征对应的头表数据中的查询内容作为所述第一查询请求的查询结果之后,还可以在预设的缓存空间中保存第一查询请求的查询结果。这样,当服务器再次收到与第一查询请求相同的查询请求的情况下,可以直接将第一查询请求的查询结果返回给客户端。通过这种方式,可以提高信息查询的效率。
在第一方面的另一种可能的实现方式中,上述响应于第一查询请求,获SQL配置表中的多个头表数据可以包括:响应于第一查询请求,判断预设的缓存空间中是否存储有所述第一查询请求对应的历史查询结果。若预设的缓存空间中未存储所述历史查询结果,则获取多个头表数据。这样可以减少针对相同的查询请求重复查询的情况,提高数据查询的效率。
在第一方面的另一种可能的实现方式中,若预设的缓存空间中存储有历史查询结果,将历史查询结果作为第一查询请求的查询结果。通过这种方式,在预设的缓存空间中存储有第一查询请求的历史查询结果的情况下,服务器可以直接将缓存空间中查找到的历史查询结果作为第一查询请求的查询结果返回至客户端,完成第一查询请求对应的数据查询流程,提高数据查询的效率。
第二方面,本申请提供一种电子设备,包括存储器和一个或多个处理器;该存储器与该处理器耦合。其中,存储器中还存储有计算机程序代码,计算机程序代码包括计算机指令,当计算机指令被所述处理器执行时,使得电子设备执行如第一方面及任一种可能的实现方式所述的方法。
第三方面,本申请提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面及任一种可能的实现方式所述的方法。
第四方面,本申请提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得该计算机执行如第一方面及任一种可能的实现方式所述的方法。该计算机可以是上述电子设备。
可以理解地,上述提供的第二方面及其任一种可能的实现方式所述的电子设备,第三方面所述的计算机存储介质,第四方面所述的计算机程序产品所能达到的有益效果,可参考第一方面及其任一种可能的实现方式中的有益效果,此处不再赘述。
附图说明
图1为本申请实施例提供的手机通过服务器查询数据的示意图;
图2为常规技术提供的SQL配置表中配置数据的示意图;
图3为常规技术提供的电子设备查询数据的示意图;
图4为本申请实施例提供的一种服务器100的结构示意图;
图5为本申请实施例提供的一种查询方法的流程图;
图6为本申请实施例提供的一种查询方法一示例的示意图;
图7为本申请实施例提供的一种查询方法一示例的流程图;
图8为本申请实施例提供的服务器多次查询第一特征表的示意图;
图9为本申请实施例提供的查询方法一示例的示意图。
具体实施方式
以下将参考附图详细说明本申请的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中术语“至少一种”表示多种中的任意一种或多种中的至少两种的任意组合,例如,包括A、B、C中的至少一种,可以表示包括从A、B和C构成的集合中选择的任意一个或多个元素。
另外,为了更好地说明本申请,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本申请同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本申请的主旨。
本申请实施例提供一种查询方法,该方法可以应用于电子设备中。例如,电子设备是服务器,客户端可以向服务器发送查询请求。服务器响应于查询请求,可以通过预设的结构化查询语言(Structured Query Language,SQL)配置表搜索该查询请求所请求的查询内容。在查找到查询请求所请求查找的查询内容的情况下,服务器可以将查找到的查询内容作为查询结果,向客户端返回查询结果。再例如,以电子设备是笔记本电脑为例,笔记本电脑可以根据用户的输入信息,在内部的存储空间中查询该输入信息对应的查询内容。在查找到该输入信息对应的查询内容的情况下,笔记本电脑可以将查找到的查询内容作为查询结果,并在笔记本电脑的屏幕上向用户展示该查询结果。
示例性的,以电子设备是服务器为例,图1示出了手机通过服务器查询数据的示意图。示例中,用户在为手机绑定用户权益的场景下,可以在手机的客户端中输入该手机的产品信息。或者,手机可以根据用户点击“申请用户权益”触控按键的用户操作,获取手机的产品信息。产品信息可以包括产品目录、所属地、客户名等产品信息。其中,产品目录还可以包括产品线、产品族、产品系列和产品型号等产品信息。
手机中的客户端得到“产品线1、产品族1、产品系列1、产品型号1、所属地1、客户1”的产品信息之后,向服务器发送查询请求。查询请求中携带有产品信息。服务器收到手机发送的查询请求之后,在SQL配置表的头表数据中查找该查询请求对应的查询结果。SQL配置表的头表数据中记录了各种手机的产品信息以及产品信息对应的用户权益。服务器在SQL配置表中搜索到与产品信息匹配的用户权益之后,可以向手机发送搜索到的用户权益(查询结果)。
为了便于理解,本申请实施例这里介绍常规技术中,电子设备查询数据的具体过程。
电子设备在查询数据时,通过将查询请求与SQL数据库中预设的SQL配置表进行匹配。在SQL配置表中存在匹配查询请求的配置数据的情况下,可以将该配置数据作为查询请求的查询结果。由于查询场景的多样化,配置数据包括多个配置字段(多个维度),每个字段存在多个值。如图2所示,配置数据1包括两个配置字段,分别为项目和产品线。其中,产品代码包括2个值,分别为项目1和项目2。产品线也同样包括2个值,分别为产品线1和产品线2。配置数据2同样包括两个配置字段,分别为项目和产品线。其中,产品代码包括2个值,分别为项目1和项目3。产品线也同样包括2个值,分别为产品线1和产品线3。
为了搜索到准确的查询结果,SQL配置表中除了头表记录的头表数据之外,还包括映射包记录的映射表数据。头表数据可以是原始的配置数据,头表数据可以包括至少一个配置字段,一个配置字段中可以包括多个值。映射表数据是通过对头表数据进行拆分得到的。例如,对头表数据中任意一个配置字段的多个值进行拆分,如对该头表数据中配置字段的多个值进行笛卡尔积展开,将该头表数据拆分为多个映射表数据。映射表数据中每个配置字段仅包括1个值。如图2所示,配置数据1和配置数据2均为头表数据。映射表1中记录的配置数据为头表数据1展开的映射表数据。映射表2中记录的配置数据为头表数据2展开的映射表数据。这种情况下,会存在信息重复配置的情况,如映射表1中的“项目1;产品线1”和映射表2中的“项目1;产品线1”重复,从而造成存储资源浪费的情况。
在电子设备根据查询请求查询SQL配置表的情况下,需要将查询请求包括的多个查询字段与SQL配置表中的映射表数据进行匹配。如果SQL配置表中不存在与查询请求匹配的映射表数据,电子设备会更改查询请求包括的至少一个请求字段的内容,如将某个请求字段的内容更改为“全部”。然后电子设备再次在SQL配置表中搜索与更改后的查询请求匹配的映射表数据,如此重复多次。直到电子设备搜索到匹配的映射表数据。或者,直到查询请求中全部请求字段的内容已被更改,电子设备完成SQL配置表的最后一次查询。
举例来说,如图3所示,电子设备接收的查询请求所包括的多个查询字段为“项目1;产品线1”。SQL数据库存储的SQL配置表的映射表数据为“全部,全部”。电子设备先在SQL配置表中查询“项目1;产品线1”的映射表数据。在未查找到的情况下,电子设备修改查询请求的产品线字段,将该查询字段的内容修改为“全部”。电子设备进而在SQL配置表中查询“项目1;全部”的映射表数据。在未查找到的“项目1;全部”的映射表数据的情况下,电子设备修改查询请求的项目字段,将该查询字段的内容修改为“全部”。电子设备再次在SQL配置表中查询“全部;产品线1”的映射表数据。在未查找到“全部;产品线1”的映射表数据的情况下,电子设备修改查询请求的项目字段和产品线字段,将项目字段和产品线字段的内容均修改为“全部”。电子设备再次在SQL配置表中查询“全部;全部”的映射表数据,得到SQL配置表中“全部;全部”的映射表数据。可见,电子设备在进行数据查询时,需要进行多次SQL数据库的查询操作,影响数据库的性能。
此外,随着查询场景的增加,SQL配置表中记录的头表数据更加多样化。SQL配置表的映射表所记录的映射表数据也会爆炸性增长。电子设备每查询一次SQL配置表,需要在众多的映射表数据中查找查询请求匹配的映射表数据,这会耗费过多的计算资源,查询效率低。
有鉴于此,本申请实施例提供的查询方法中,电子设备响应于第一查询请求,获取SQL配置表中头表存储的多个头表数据。头表中存储的是未经过拆分的原始配置数据。电子设备可以通过第一查询请求所包括的至少一个查询字段与对应头表数据的匹配字段的匹配结果,生成多个第一特征。电子设备还可以生成第一查询请求对应的多个第二特征,每个第二特征用于规定查询内容对应的多个配置字段与第一查询请求包括的多个查询字段的匹配规则。进一步地,电子设备可以遍历多个第二特征,从多个第一特征中查找与对应第二特征相同的第一特征。若查找到与第二特征相同的第一特征,电子设备可以将该第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果。
通过这种方式,电子设备在数据查询时,获取SQL配置表中的头表数据即可,减少查询SQL配置表中的从属数据的情况。如此,不仅可以减少SQL配置表中映射表的配置,节省SQL数据库的存储空间,还可以提高数据查询的效率。同时,电子设备通过特征匹配的方式查询数据,可以减少SQL数据库的访问次数,提高数据查询过程中SQL数据库的性能。
示例性的,以查询手机的用户权益的应用场景为例,上述头表数据包括以下任意一种信息:产品线、产品族、产品系列、产品型号、所属地、客户名和用户权益。其中,每种信息可以对应头表数据的一个配置字段,其中,用户权益可以是第一查询求请求所请求的查询内容。
本申请实施例提供的所述方法,可以由服务器、终端设备或其它类型的电子设备执行。示例性的,本申请实施例中所述的电子设备可以是手机、平板电脑、桌面型、膝上型、手持计算机、笔记本电脑、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本,以及蜂窝电话、个人数字助理(personal digital assistant,PDA)、增强现实(augmented reality,AR)\虚拟现实(virtual reality,VR)设备、媒体播放器、电视机等终端设备。一些实现方式中,所述方法可以通过服务器中的处理器调用存储器中存储的计算机可读指令的方式来实现。
本申请实施例中以电子设备是服务器100为例,介绍电子设备的硬件结构。图4为本申请实施例提供的一种电子设备的结构框图。如图4所示,服务器100包括处理器122,其进一步包括一个或多个处理器,以及由存储器132所代表的存储器资源,用于存储可由处理器122的执行的指令,例如应用程序。存储器132中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器122被配置为执行指令,以执行上述方法。
服务器100还可以包括一个电源组件126被配置为执行服务器100的电源管理,一个有线或无线网络接口150被配置为将服务器100连接到网络,和一个输入输出接口158。服务器100可以操作基于存储在存储器132的操作系统。
以上实施例中的查询方法均可以在具备上述硬件结构的电子设备中实现。以下实施例中,以电子设备是图4所示的服务器,服务器接收客户端发送的查询手机权益的第一查询请求为例,介绍本申请实施例的方法。
图5为本申请实施例提供的一种查询方法的流程图。如图5所示,该查询方法包括:
S21,服务器接收第一查询请求。
在本申请实施例中,服务器可以接收客户端发送的第一查询请求。例如,用户可以在用于查询数据的客户端中,输入查询信息。客户端根据用户输入的查询信息,向服务器发送第一查询请求。第一查询请求中可携带有用户输入的查询信息。
这里,第一查询请求可以包括n个查询字段,n为正整数。第一查询请求用于查询与n个查询字段匹配的查询内容。举例来说,第一查询请求包括的n个查询字段可以分别为“产品线1;产品族1;产品系列1”,第一查询请求可以用于请求查询与“产品线1;产品族1;产品系列1”匹配的用户权益。可理解,这n个查询字段即是第一查询请求携带的查询信息。
S22,响应于第一查询请求,服务器获取预设的SQL配置表中的多个头表数据。
本申请实施例中,响应于第一查询请求,服务器可以获取SQL配置表中的多个头表数据。每个头表数据可以包括n个配置字段以及n个配置字段对应的查询内容。其中,第一查询请求所包括的n个查询字段与每个头表数据包括的n个配置字段一一对应。
举例来说,在第一查询请求包括产品线字段和产品族字段这两个查询字段的情况下,每个头表数据至少包括产品线字段和产品族字段这两个配置字段,以及产品线字段和产品族字段对应的用户权益数据(查询内容)。
可理解,头表数据除了包括与第一查询请求的n个查询字段对应的n个配置字段之外,还可以包括m个配置字段。m为正整数。这m个配置字段可以是与第一查询请求的n个查询字段不对应的字段。即头表数据中还可以包括与n个查询字段不对应的其他配置字段。
这里,SQL配置表可以用于记录所有场景下手机的配置数据。SQL配置表可以包括头表和映射表。其中,头表用于记录原始的配置数据,即头表数据。可理解,头表数据中的一个配置字段可以包括多个值。例如上述配置数据1的产品线字段包括两个值,分别为产品线1和产品线2,配置数据1是头表数据。映射表数据可以是通过对头表数据拆分得到的,映射表数据中的一个配置字段仅包括1个值。如上述映射表1中的配置数据均为映射表数据。
在一些实现方式中,服务器可以在SQL数据库中获取SQL配置表中的多个头表数据。
在一些实现方式中,为了减少SQL数据库的访问次数,减少对SQL数据库性能的影响,服务器还可以预先将SQL数据库中存储的SQL配置表中全量的多个头表数据缓存在预设的缓存空间中。本申请实施例中,在上述S21之前,还可以包括:从SQL数据库中读取SQL配置表中的多个头表数据,并将读取的多个头表数据缓存在预设的缓存空间中。相应地,服务器响应于第一查询请求,从预设的缓存空间获取多个头表数据。
这样,服务器在查询第一查询请求所请求查询的查询内容的情况下,访问预设的缓存空间即可。如此,可以减少数据查询中服务器访问SQL数据库的次数,减小数据查询过程中对SQL数据库性能的影响。
示例性的,预设的缓存空间可以是远程字典服务(Remote Dictionary Server,Redis)数据库,可提供数据的高效缓存服务。
S23,服务器生成多个第一特征。
本申请实施例中,服务器可以根据第一查询请求和多个头表数据,生成多个第一特征。每个第一特征对应多个头表数据中的一个头表数据。这里,每个第一特征可以用于表示第一查询请求的n个查询字段与对应头表数据中n个配置字段的匹配结果。
举例来说,服务器可以分别确定每个头表数据与第一查询请求的匹配结果。进一步根据该匹配结果,服务器确定每个头表数据对应的第一特征。例如,在一个头表数据与第一查询请求的匹配程度大于或等于预设匹配程度阈值的情况下,服务器可以确定该头表数据对应的第一特征的特征值为第二值。否则,在该头表数据与第一查询请求的匹配程度小于预设匹配程度阈值的情况下,服务器可以确定该头表数据对应的第一特征的特征值为第一值。在确定第一特征的特征值之后,可以生成该头表数据的第一特征。
以一个头表数据中n个配置字段为“项目1;产品线1;产品系列1”,第一查询请求的n个查询字段为“项目1;产品线1;产品系列2”为例。该头表数据与第一查询请求有两个字段相同,有一个字段不同,则可以认为该头表数据与第一查询请求的匹配程度为66.7%。若该匹配程度大于或等于预设匹配程度阈值,则该头表数据对应的第一特征为1。否则,该头表数据对应的第一特征为0。
在一些实现方式中,一个头表数据的第一特征可以包括一个第一特征值。一些实现方式中,一个第一特征可以包括多个第一特征值。例如,在头表数据包括多个配置字段的情况下,头表数据的每个配置字段可以对应第一特征中的一个第一特征值。
在一些实现方式中,多个第一特征可以记录在第一特征表中。第一特征表用于记录每个头表数据对应的第一特征。在确定各个头表数据分别对应的第一特征之后,服务器可以生成包括各个头表数据的第一特征的第一特征表。
S24,服务器生成多个第二特征。
本申请实施中,每个第二特征可以是基于第一查询请求的n个查询字段生成的。第二特征可用于规定第一查询请求所请求的查询内容对应的n个配置字段与n个查询字段中每个字段的匹配规则。
例如,服务器可以对第一查询请求所携带的查询信息进行特征提取,得到第一查询请求的第二特征。再根据第一查询请求的第二特征生成多个第二特征,如服务器重新生成一个第二特征,该第二特征与第一查询请求的第二特征中至少一个请求字段的内容不同。
示例性的,若第二特征为第一值,该第二特征可以用于规定第一查询请求所请求的查询内容对应的n个配置字段与第一查询请求的n个查询字段完全匹配,即查找到的头表数据的n个配置字段与第一查询请求的n个查询字段完全相同。若第二特征为第二值,该第二特征可以用于规定第一查询请求所请求的查询内容对应的n个配置字段与第一查询请求的n个查询字段不完全匹配,即,查找到的头表数据的n个配置字段与第一查询请求的n个查询字段可以不完全相同。
一些实现方式中,一个第二特征可以包括一个第二特征值。一些实现方式中,一个第二特征可以包括多个第二特征值。例如,在第一查询请求包括多个查询字段的情况下,每个查询字段可以对应第二特征的一个第二特征值。
一些实现方式中,多个第二特征可以记录在第二特征表中。在确定各个第二特征之后,服务器可以生成包括各个第二特征的第二特征表。
可理解,本步骤与上述步骤S23的执行顺序不分先后。一些实现方式中,服务器可以先执行S23再执行本步骤。一些实现方式中,服务器可以先执行本步骤再执行S23。一些实现方式中,服务器可以同时执行S23和本步骤。
S25,服务器遍历多个第二特征,从多个第一特征中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果。
本申请实施例中,服务器在生成多个第一特征和多个第二特征之后,可以在多个第一特征中查询与第二特征匹配的第一特征。例如,服务器可以遍历多个第二特征。针对任意一个第二特征,服务器将该第二特征与多个第一特征分别进行匹配。在查询到与该第二特征相同的第一特征的情况下,服务器可以在预设的缓存空间中获取该第一特征对应的头表数据,并将该头表数据中的查询内容作为第一查询请求的查询结果。进一步地,服务器向客户端返回第一查询请求的查询结果。
本申请实施例提供的查询方法,在数据查询的过程中,通过特征匹配的方式进行数据查询,服务器可以减少查询SQL配置表中映射表数据的情况,提高数据查询的效率。SQL数据库中也可以减少映射表数据的维护,节省SQL数据库的维护成本和存储空间。
在一些实现方式中,为了提高数据查询效率,减少SQL数据库的访问次数。在得到第一查询请求的查询结果之后,服务器还可以对第一查询结果进行缓存,以供下一次数据查询使用。即,上述S24之后,本申请实施例提供的查询方法还可以包括S26:
S26,在预设的缓存空间中保存第一查询请求的查询结果。
本申请实施例中,服务器在得到第一查询请求的查询结果之后,可以将第一查询请求的查询结果缓存在预设的缓存空间中。这样,当服务器再次收到与第一查询请求相同的查询请求的情况下,可以直接将第一查询请求的查询结果返回给客户端。通过这种方式,可以提高信息查询的效率。
本申请实施例中,预设的缓存空间中可以存储历史查询请求的历史查询结果。服务器在接收到第一查询请求的情况下,可以先判断预设的缓存空间中是否存在第一查询请求的历史查询结果。在预设的缓存空间中不存在第一查询请求的历史查询结果的情况下,服务器再在SQL配置表中查询第一查询请求所请求的查询内容。即,上述S22可以包括以下S221-S222:
S221,响应于第一查询请求,服务器判断预设的缓存空间中是否存储有第一查询请求对应的历史查询结果。
S222,若预设的缓存空间中未存储所述历史查询结果,服务器则获取SQL配置表中的多个头表数据。
通过这种方式,服务器在接收到第一查询请求的情况下,可以先搜索第一查询请求的历史查询结果。在未搜索到第一查询请求的历史查询结果的情况下,服务器再在预设的SQL配置表中搜索第一查询请求所请求的查询内容。这样可以减少针对相同的查询请求重复查询的情况,提高数据查询的效率。
相应地,服务器在预设的缓存空间中搜索到第一查询请求的历史查询结果的情况下,服务器可以直接搜索到的历史查询结果作为第一查询请求的查询结果。即,在S221之后,本申请实施例提供的方法还可以包括S223:
S223,若预设的缓存空间中存储有历史查询结果,服务器将该历史查询结果作为第一查询请求的查询结果。
通过这种方式,在预设的缓存空间中存储有第一查询请求的历史查询结果的情况下,服务器可以直接将缓存空间中查找到的历史查询结果作为第一查询请求的查询结果返回至客户端,完成第一查询请求对应的数据查询流程,提高数据查询的效率。
在本申请实施例中,上述S22中提到,服务器在查询第一查询请求所请求的查询内容时,可以生成多个头表数据分别对应的第一特征。每个第一特征可用于表示第一查询请求包括的n个查询字段与头表数据的n个匹配字段的匹配结果。下面通过一种可能的实现方式对每个头表数据对应的第一特征进行说明。
这里,匹配结果可以为第一查询请求的n个查询字段与头表数据的n个配置字段不匹配。或者,上述匹配结果可以为n个第一特征值。其中,第一特征的n个第一特征值与第一查询请求的n个查询字段、头表数据的n个配置字段一一对应。每个第一特征值用于表征n个查询字段与n个配置字段中对应字段的匹配结果。
换句话说,第一特征可以包括第一查询请求的n个查询字段与头表数据的n个配置字段不匹配的匹配结果。或者,第一特征可以包括n个第一特征值。通过第一特征可以对任意一个头表数据与第一查询请求的匹配结果进行表征,从而服务器在查询第一查询请求所请求的查询内容时,可以借助第一特征进行查询,降低数据查询过程中的复杂度,提高数据查询的效率。
这里,在第一特征包括第一查询请求与头表数据不匹配的匹配结果的情况下,第一特征可以为预设值或预设标识。例如,第一特征为“null”,表示该第一特征对应的头表数据与第一查询请求不匹配。其中,第一查询请求与头表数据不匹配可以理解为,第一查询请求的n个查询字段与对应的头表数据的n个配置字段中,对应的任意一个字段不匹配,则第一查询请求与头表数据不匹配。
举例来说,第一查询请求为“项目1;产品线1”,第一查询请求包括项目字段和产品线字段两个查询字段。头表数据包括项目字段和产品线字段两个配置字段,分别为“项目2;产品线1”。其中,第一查询请求的项目字段(项目1)与头表数据的项目字段(项目2)不匹配,第一查询请求的产品线字段(产品线1)与头表数据的产品线字段(产品线1)匹配,第一查询请求的n个查询字段与该头表数据的n个配置字段也是不匹配的。
这里,在第一特征包括n个第一特征值的情况下,第一特征的第一特征值可以为第一值或者第二值。例如,第一值为0,第二值为1。
其中,若头表数据n个配置字段中的第一配置字段为预设目标值,则第一配置字段对应的第一特征值为第一值。第一配置字段可以为该头表数据的n个配置字段中的任一个配置字段。
这里,如果第一特征的任一个第一特征值为第一值,可以表示,头表数据中对应于该第一特征值的配置字段的字段内容为预设目标值。预设目标值可用于表示该配置字段适配于全部情况,即第一查询请求中对应于该配置字段的查询字段可以为任意值。
举例来说,一个头表数据的n个配置字段为“项目2;ALL”,第一查询请求的n个查询字段为“项目2;产品线1”。其中,该头表数据的产品线字段为预设目标值ALL,表示产品线字段为任意一个产品线均可。第一查询请求的产品线字段为“产品线1”,可以认为头表数据的产品线字段匹配于第一查询请求的产品线字段。该头表数据的第一特征中,对应于产品线字段的第一特征值可以为第一值。
其中,若头表数据的第一配置字段包括第一查询请求n个查询字段中对应查询字段,则第一配置字段对应的第一特征值为第二值。
这里,如果第一特征的任一个第一特征值为第二值,可以表示,头表数据中对应于该第一特征值的第一配置字段,包括第一查询请求中对应于该第一特征值的查询字段。举例来说,一个头表数据的n个配置字段为“项目2,项目1;产品线1”,第一查询请求为“项目2;产品线1”。头表数据的项目字段(第一配置字段)“项目2,项目1”包括第一查询请求的项目字段“项目2”,则该项目字段(第一配置字段)对应的第一特征值为第二值。
相应地,在本申请实施例中,上述S23中提到,服务器在查询第一查询请求所请求的查询内容时,可以基于第一查询请求的n个查询字段生成多个二特征。每个第二特征可用于规定查询内容对应的n个配置字段与n个查询字段中每个字段的匹配规则。下面通过一种可能的实现方式对每个第二特征进行说明。
本申请实施例中,每个第二特征可以包括n个第二特征值。n个第二特征值与查询内容对应的n个配置字段、n个查询字段一一对应。每个第二特征值为第一值或者第二值,即第二特征的第二特征值与第一特征的第一特征值具有相同的可取值。
其中,若第二特征值为第一值,用于指示不要求查询内容对应的n个配置字段中对应配置字段与第一查询请求的n个查询字段中对应查询字段匹配。
其中,若第二特征值为第二值,用于指示要求查询内容对应的n个配置字段中对应配置字段与第一查询字段的n个查询字段中对应查询字段匹配。
举例来说,第一查询请求为“项目1;产品线1”。一个第二特征为(10),该第二特征包括2个第二特征值,第一个第二特征值为1,第二个第二特征值为0。其中,第一个第二特征分别与第一查询请求的项目字段、头表数据的项目字段对应。第二个第二特征分别与第一查询请求的产品线字段、头表数据的产品线字段对应。第一个第二特征值为1可以表示,在服务器查询到的头表数据的n个配置字段中,要求项目字段的字段内容包括第一查询请求中项目字段的字段内容。第二个第二特征值为0可以表示,在服务器查询到的头表数据的n个配置字段中,不要求产品线字段的字段内容包括第一查询请求中产品线字段的字段内容。这种情况下,服务器查询到的头表数据的n个配置字段可以为“项目1;产品线2”。
本申请实施例中,通过第一特征表征头表数据与第一查询请求的匹配结果,通过第二特征对服务器查询到的头表数据的n个配置字段进行指示,服务器可以根据多个第一特征和多个第二特征查询数据,得到满足条件查询内容。可以减少服务器在数据查询过程中的匹配次数,提高数据查询的效率。
下面通过一种可能的实现方式对服务器生成多个第二特征的过程进行说明。在一种可能的实现方式中,上述S24可以包括S241-S242:
S241,服务器生成第一查询请求对应的第二特征。其中,第一查询请求对应的第二特征中n个第二特征值均为第二值;
S242,服务器生成多个第二查询请求对应的第二特征。其中,每个第二查询请求对应的第二特征中至少一个第二特征值为第一值、其他第二特征值为第二值。
本申请实施例中,服务器生成的多个第二特征可以包括第一查询请求对应的第二特征以及第二查询请求对应的第二特征。
这里,第一查询请求对应的第二特征中n个第二特征值均为第二值(如1)。第一查询请求对应的第二特征可以对应于精确查询的匹配规则。举例来说,在第一查询请求为“产品系列1;产品型号1”,第一查询请求对应的第二特征为(11)。服务器根据第二特征为(11)查询到的头表数据中,产品系列字段包括“产品系列1”,产品型号字段包括“产品型号1”。
本申请实施例中,除了第一查询请求对应的第二特征中n个第二特征值均为第二值的情况之外,第一查询请求对应的n个第二特征值还可以存在其他情况。一些示例中,针对第一查询请求包括的n个查询字段中的第一查询字段,若第一查询字段为预设目标值ALL,第一查询字段对应的第二特征值可以为第一值。第一查询字段可以是第一查询请求的n个查询字段中的任一个查询字段。例如,第一查询请求的n个查询字段为“产品系列1;ALL”,则第一查询请求对应的第二特征值可以为(10)。
这里,一个第二查询请求对应的第二特征中n个第二特征值中,至少一个第二特征值为第一值(如0),其他第二特征值为第二值(如1)。第二查询请求对应的第二特征可以对应于非精确查询的匹配规则。举例来说,在第一查询请求为“产品系列1;产品型号1;所属地1”,第二查询请求对应的第二特征为(100)。服务器根据第二特征为(100)查询到的头表数据中,产品系列字段包括“产品系列1”,产品型号字段可以为任意的产品型号,所属地字段可以为任意的所属地。
本申请实施例中,服务器可以生成第一查询请求对应的第二特征,以及生成多个第二查询请求对应的第二特征。这样,服务器可以根据第一查询请求对应的第二特征进行精确查询,根据第一查询请求对应的第二特征进行非精确查询,从而可以满足数据查询的多样化查询场景。
进一步地,为了更好地说明本申请实施例中服务器生成多个第二查询请求对应的第二特征的过程,在一种可能的实现方式中,针对第二查询请求对应的第二特征中一个第二特征值为第二值、其他第二特征值为第二值的情况,上述S242可以包括:针对第一查询请求中n个查询字段中各个查询字段,分别执行:将第一查询请求对应的第二特征中一个查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征。
举例来说,第一查询请求包括3个查询字段,第一查询请求对应的第二特征为(111)。针对第一查询请求的第一个查询字段,服务器可以将该查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征(011)。相应地,针对第一查询请求的第二个查询字段,服务器可以将该查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征(101)。相应地,针对第一查询请求的第三个查询字段,服务器可以将该查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征(110)。
一些实现方式中,服务器也可以将第一查询请求对应的第二特征中多个查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征。例如,第一查询请求包括3个查询字段,第一查询请求对应的第二特征为(111)。针对第一查询请求的第一个查询字段和第二个查询字段,服务器可以将这两个查询字段对应的第二特征值设置为第一值,得到一个第二查询请求对应的第二特征(001)。
可以理解,服务器将第一查询请求中哪个或哪些查询字段对应的第二特征值设置为第一值,可以根据实际应用需求进行设置。例如,服务器预先设置查询字段的优先级。优先级可用于指示需要设置的查询字段以及需要设置的查询字段所对应的顺序。服务器可以根据预设的优先级由高至低所指示的查询字段的顺序,将对应查询字段的第二特征值设置为第一值。
在一些实现方式中,本申请实施例中提到的第二查询请求,第二查询请求可以仅用于对多个第二特征中第一查询请求对应的第二特征与其他第二特征进行区分,无实际意义。
在一些实现方式中,服务器还可以基于第一查询请求生成多个第二查询请求,再生成多个第二查询请求对应的第二特征。例如,服务器可以根据上述预设的优先级由高至低指示的查询字段的顺序,依次将第一查询请求中的至少一个查询字段设置为预设目标值ALL,得到每次设置的一个第二查询请求。针对第二查询请求中n个查询字段的一个查询字段,在该查询字段为预设目标值的情况下,该查询字段对应的第二特征值可以为第一值(如0)。在该查询字段为不为预设目标值的情况下,该查询字段对应的第二特征值可以为第二值(如1)。
本申请实施例中,服务器在生成多个第一特征以及多个第二特征之后,针对多个第二特征中的一个第二特征,服务器可以在多个第一特征中查找与该第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为查询结果,完成第一查询请求对应的数据查询。为了便于理解,下面通过一种可能的实现方式对上述S25进行说明。上述S25可以包括S251-S253:
S251,服务器从多个第一特征中查找与第一查询请求对应的第二特征相同的第一特征。
S252,若查找到与第一查询请求对应的第二特征相同的第一特征,则服务器将查找到的第一特征对应的头表数据中的查询内容作为查询结果。
S253,若未查找到与第一查询请求对应的第二特征相同的第一特征,则服务器按照多个第二查询请求对应的第二特征中、为第一值的第二特征值对应的查询字段设置的优先级由高到低的顺序,从多个第一特征中依次查找与每个第二查询请求对应的第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为查询结果。
在本申请实施例中,服务器可以先利用第一查询请求对应的第二特征进行精确查询。服务器可以将多个第一特征分别与第一查询请求对应的第二特征进行匹配,查找多个第一特征中与查询请求对应的第二特征相同的第一特征。若在多个第一特征中查找到与第一查询请求对应的第二特征相同的第一特征,服务器可以根据多个第一特征与多个头表数据的对应关系,在预设的缓存空间中获取查找到的第一特征所对应的头表数据。并将该头表数据中的查询内容作为第一查询请求的查询结果。
若在多个第一特征中未查找到与第一查询请求对应的第二特征相同的第一特征,服务器再利用第二查询请求对应的第二特征进行非精确查询。相应地,服务器可以按照预设的优先级由高到低指示的顺序,遍历多个第二查询请求对应的第二特征。针对一个第二查询请求对应的第二特征,可以将多个第一特征分别与该第二特征进行匹配,查找与该第二特征相同的第一特征。若查找到与该第二特征相同的第一特征,服务器可以根据多个第一特征与多个头表数据的对应关系,在预设的缓存空间中获取查找到的第一特征所对应的头表数据,并将该头表数据中的查询内容作为第一查询请求的查询结果。若服务器未查找到当前遍历到的第二特征相同的第一特征,服务器则继续遍历下一个第二特征。直到服务器查询到与一个第二查询请求对应的第二特征相同的第一特征,或者,直到服务器遍历完最后一个第二特征。
这里,服务器可以在多个第二查询请求对应的第二特征中,设置为第一值的第二特征值所对应的查询字段的优先级。该优先级可以对应于第一查询请求中n个查询字段中至少一个查询字段可粗略查询的顺序。
举例来说,第一查询请求为“项目1;产品线1;产品型号1”。多个第二特征分别为(111)、(110)、(101)和(100)。其中,(111)可以是第一查询请求对应的第二特征。(110)、(101)和(100)可以是多个第二查询请求对应的第二特征。若第二特征中任一个第二特征值为0(第一值),则可以表示不要求查询到头表数据对应于该第二特征值的配置字段与对应第一查询请求的请求字段匹配,即该请求字段是可以粗略查询的。第一查询请求中各个查询字段对应的优先级从高到低依次为:产品型号字段;产品线字段;产品型号字段和产品线字段。相应地,服务器遍历多个第二查询请求对应的第二特征的顺序可以为(110)、(101)和(100)。
本申请实施例中,在查询第一查询请求所请求的查询内容时,服务器可以先根据第一查询请求对应的第二特征进行精确查询。在未得到查询结果的情况下,服务器再按照预设的优先级由高到低的顺序,依次遍历第二查询请求对应的第二特征,进行粗略查询。通过这种方式,查询到头表数据中n个配置字段尽可能与第一查询请求中n个查询字段相匹配,从而可以为用户提供最适配的查询内容。
下面通过一示例对本申请实施例提供的查询方法进行说明。如图6所示,以服务器接收客户端发送的第一查询请求为例。服务器首先从SQL数据库中读取多个头表数据,并将多个头表数据缓存在预设的缓存空间中。若服务器接收到客户端发送的第一查询请求,服务器则读取预设的缓存空间中缓存的历史查询结果。若预设的缓存空间中缓存有第一查询请求的历史查询结果,则服务器直接将查询到的历史查询结果返回至客户端。否则,服务器在预设的缓存空间中读取多个头表数据,并根据多个头表数据和第一查询请求构建第一特征表和第二特征表。进一步服务器通过第一特征表和第二特征表查找包括第一查询请求所请求的查询内容的头表数据。若查找到第一查询请求所请求的查询内容的头表数据,服务器将该头表数据的查询内容作为第一查询请求的查询结果返回至客户端,并将第一查询请求的查询结果缓存在预设的缓存空间中。如图7所示,本示例提供的查询方法具体可以包括以下步骤:
S301,服务器从SQL数据库中读取SQL配置表中的多个头表数据,并将多个头表数据缓存在预设的缓存空间中。
SQL数据库中存储有SQL配置表,SQL配置表包括多个头表数据。一些实现方式中,SQL配置表还包括多个映射表数据。服务器可以将SQL数据库中全量的多个头表数据缓存在预设的缓存空间中。预设的缓存空间可以是Redis数据库。
S302,服务器接收客户端发送的第一查询请求。
第一查询请求包括n个查询字段,第一查询请求用于请求查询与所述n个查询字段匹配的查询内容。服务器可以通过微服务进程接收客户端发送的第一查询请求。微服务进程可以是为提供数据查询服务设置的独立的服务进程。微服务进程可以不受其他服务进程影响。
S303,服务器读取预设的缓存空间中缓存的历史查询结果,判断预设的缓存空间中是否缓存有第一查询请求的历史查询结果。
这里,预设的缓存空间除了缓存头表数据之外,还用于缓存历史查询结果。若预设的缓存空间缓存有第一查询请求的历史查询结果,则服务器执行S304。若预设的缓存空间未缓存第一查询请求的历史查询结果,则服务器执行S305。
S304,服务器将该历史查询结果作为第一查询请求的查询结果返回至客户端。
S305,服务器读取缓存空间中缓存的多个头表数据。
S306,服务器生成多个第一特征,构建包括多个第一特征的第一特征表。
这里,服务器可以根据第一查询请求和多个头表数据,生成每个头表数据对应的第一特征。具体的生成多个第一特征方式可以参见上文中对生成多个第一特征的描述内容,这里不再赘述。
S307,服务器生成多个第二特征,构建包括多个第二特征的第二特征表。
这里,服务器可以生成第一查询请求对应的第二特征以及生成多个第二查询请求对应的第二特征,并构建包括多个第二特征且带有顺序的第二特征表。其中,第一查询请求对应的第二特征排列于第二特征表的第一位。第二查询请求对应的第二特征按照预设的优先级指示的排列顺序,在第二特征表中依次排列在第一查询请求对应的第二特征之后。
S308,服务器遍历多个第二特征,从第一特征表中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为第一查询请求的查询结果。
服务器可以按照第二特征表中多个第二特征的排列顺序遍历多个第二特征。针对当前遍历的第二特征,如果在第一特征表中查找到与该第二特征相同的第一特征,服务器可以将查找到的第一特征对应的头表数据中的查询内容,作为第一查询请求的查询结果,并向客户端返回第一查询请求的查询结果。若服务器未查找到与该第二特征相同的第一特征,则服务器继续遍历下一个第二特征,直到查到与第二特征相同的第一特征,或者,第二特征表遍历完成。
图8示出服务器遍历第二特征表多次查询第一特征表的示意图。服务器在第二特征表中获取第一查询请求对应的第二特征,在第一特征表中查找与第一查询请求对应的第二特征相同的第一特征,执行第一次查询。若在第一特征表中未查找到与第一查询请求对应的第二特征相同的第一特征,则第一次查询失败,服务器执行第二次查询。服务器在第二特征表中获取下一个第二特征,在第一特征表中查找与该第二特征相同的第一特征,执行第二次查询。经过多次查询之后,若服务器在最后一次查询中仍然未查找到与最后一个第二特征相同的第一特征,服务器可以向客户端返回查询失败的查询结果,或者,可以将通用查询内容作为第一查询请求的查询结果。例如,在查询用户权益的场景中,服务器可以向客户端返回通用的用户权益。
通过上述数据查询流程,服务器可为第一查询请求查找所请求的查询内容。在查询过程中,无需读取映射表数据,提高数据查询的效率。
这里,在SQL数据库中存储的SQL配置表中的多个头表数据发生改变的情况下,服务器可以清空预设的缓存空间中缓存的头表数据。一些实现方式中,服务器在清空预设的缓存空间中缓存的头表数据之后,可以重新读取SQL数据库中存储的多个头表数据,并将读取的多个头表数据缓存在预设的缓存空间中。这样,可以使预设的缓存空间中缓存的头表数据与SQL数据库中存储的头表数据一致。
为了更好地说明本申请实施例提供的方法,下面再通过一个具体示例对本申请实施例提供的查询方法进行说明。
如图9所示,SQL配置表中存在3个头表数据。每个头表数据包括的n个配置字段分别为产品线(line)字段、产品族(familiy)字段、产品系列(series)字段和产品型号(offer)字段。这3个头表数据分别为date1、date2和date3。date1(“产品线5,产品线6”;“产品族6”; “产品系列6”;“全部”),date2(“产品线6”;“产品族6”;“产品系列6”;“全部”),date3(“产品线5,产品线6”; “产品族6”; “全部”; “全部”)。第一查询请求的n个查询字段分别为产品线字段、产品族字段、产品系列字段和产品型号字段。第一查询请求为req1(“产品线5”;“产品族6”;“产品系列6”;“产品型号7”)。
服务器比较头表数据和第一查询请求。在头表数据和第一查询请求的相同字段中,如果头表数据的配置字段为预设目标值ALL,头表数据该配置字段对应的第一特征值为第一值0。如果头表数据的配置字段包含或者等于第一查询请求的查询字段,头表数据该配置字段对应的第一特征值为第二值1。否则,为头表数据对应的第一特征为不匹配null。如此,可以得到3个头表数据对应的第一特征分别为date1(“1110”),date2(“null”),date3(“1100”)。
第一查询请求中各个查询字段对应的第二特征值为第二值1。根据预设的优先级由高到低指示的各个查询字段对应的顺序,服务器依次将第一查询请求对应的查询字段设置为预设目标值,得到每次设置后的第二查询请求req2、req3和req4。其中,req2(“产品线5”;“ALL”;“产品系列6”;“产品型号7”),req3(“产品线5”;“产品族6”;“ALL”;“产品型号7”),req4(“产品线5”;“产品族6”;“产品系列6”;“ALL”)。
相应地,服务器比较第二查询请求和第一查询请求。在第二查询请求和第一查询请求的相同字段中,如果第二查询请求的查询字段为预设目标值ALL,第二查询请求该查询字段对应的第二特征值为第一值0。如果第二查询请求的查询字段包含或者等于第一查询请求的查询字段,第二查询请求该查询字段对应的第二特征值为第二值1。如此,可以得到3个第二查询请求对应的第二特征分别为req2(“1011”),req3(“1101”),req4(“1110”)。根据得到的4个第二特征构建第二特征表reqList(“1111”; “1011”;“1101”;“1110”)。
服务器按顺序遍历第二特征表reqList,在第一特征表中查询与第二特征相同的第一特征。在第二特征值为“1110”时服务器可以查到相同的第一特征值,服务器返回第二特征“1110”对应的头表数据。
本申请实施例提供的方法,在数据查询时,服务器获取SQL配置表中的头表数据即可,从而减少查询SQL配置表中的从属数据的情况。如此,不仅可以减少SQL配置表中映射表的配置,节省SQL数据库的存储空间,还可以提高数据查询的效率。表1中示出了本申请实施例提供的方法数据查询的耗时以及常规技术数据查询的耗时。通过本申请实施例提供的方法查询数据时,在头表数据个数为10000时,耗时30毫秒(ms)。而常规技术中在头表数据个数为270个,映射表数据个数为329397的情况下,耗时为30毫秒。可见,通过本申请实施例提供的查询方法,可以大大提高数据查询的效率。
表1数据查询的耗时
本申请另一些实施例提供了一种电子设备,该电子设备包括:存储器和一个或多个处理器。该存储器与处理器耦合。其中,上述存储器中还存储有计算机程序代码,该计算机程序代码包括计算机指令。当计算机指令被处理器执行时,电子设备可执行上述方法实施例中服务器100执行的各个功能或者步骤。该电子设备的结构可以参考图4所示的服务器100的结构。
本申请实施例还提供一种芯片系统,该芯片系统包括至少一个处理器和至少一个接口电路。处理器和接口电路可通过线路互联。例如,接口电路可用于从其它装置(例如电子设备的存储器)接收信号。又例如,接口电路可用于向其它装置(例如处理器)发送信号。示例性的,接口电路可读取存储器中存储的指令,并将该指令发送给处理器。当所述指令被处理器执行时,可使得电子设备执行上述实施例中的各个步骤。当然,该芯片系统还可以包含其他分立器件,本申请实施例对此不作具体限定。
本申请实施例还提供一种计算机可读存储介质,该计算机存储介质包括计算机指令,当所述计算机指令在上述电子设备上运行时,使得该电子设备执行上述方法实施例中服务器执行的各个功能或者步骤。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行上述方法实施例中服务器执行的各个功能或者步骤。
通过以上实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
Claims (12)
1.一种查询方法,其特征在于,包括:
接收第一查询请求;其中,所述第一查询请求包括n个查询字段,所述第一查询请求用于请求查询与所述n个查询字段匹配的查询内容,n为正整数;
响应于所述第一查询请求,获取预设的结构化查询语言SQL配置表中的多个头表数据;其中,每个头表数据包括n个配置字段,以及所述n个配置字段对应的查询内容;所述n个查询字段与所述n个配置字段一一对应;所述SQL配置表中的头表包括所述多个头表数据;
生成多个第一特征;其中,每个第一特征对应所述多个头表数据中的一个头表数据,包括所述n个查询字段与对应头表数据中所述n个配置字段的匹配结果;其中,所述匹配结果为:所述n个查询字段与所述n个配置字段不匹配,或者n个第一特征值;若所述n个配置字段中的第一配置字段为预设目标值,则所述第一配置字段对应的第一特征值为第一值;若所述第一配置字段包括所述n个查询字段中对应查询字段,则所述第一配置字段对应的第一特征值为第二值;所述第一配置字段为所述n个配置字段中的任一个配置字段;
生成多个第二特征,每个第二特征是基于所述n个查询字段生成的,用于规定查询内容对应的n个配置字段与所述n个查询字段中每个字段的匹配规则;其中,所述每个第二特征包括n个第二特征值,所述第二特征值为所述第一值,用于指示不要求查询内容对应的n个配置字段中对应配置字段与所述n个查询字段中对应查询字段匹配;所述第二特征值为所述第二值,用于指示要求查询内容对应的n个配置字段中对应配置字段与所述n个查询字段中对应查询字段匹配;
遍历所述多个第二特征,从所述多个第一特征中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为所述第一查询请求的查询结果。
2.根据权利要求1所述的方法,其特征在于,所述n个第一特征值与所述n个查询字段、所述n个配置字段一一对应;每个第一特征值用于表征所述n个查询字段与所述n个配置字段中对应字段的匹配结果。
3.根据权利要求2所述的方法,其特征在于,所述n个第二特征值与查询内容对应的n个配置字段、所述n个查询字段一一对应;所述第二特征值为所述第一值或者所述第二值。
4.根据权利要求3所述的方法,其特征在于,所述生成多个第二特征,包括:
生成所述第一查询请求对应的第二特征;其中,所述第一查询请求对应的第二特征中n个第二特征值均为所述第二值;
生成多个第二查询请求对应的第二特征;其中,每个第二查询请求对应的第二特征中至少一个第二特征值为所述第一值、其他第二特征值为所述第二值。
5.根据权利要求4所述的方法,其特征在于,每个第二查询请求对应的第二特征中一个第二特征值为所述第一值、其他第二特征值为所述第二值;
其中,所述生成多个第二查询请求对应的第二特征,包括:
针对所述n个查询字段中各个查询字段,分别执行:将所述第一查询请求对应的第二特征中一个查询字段对应的第二特征值设置为所述第一值,得到一个第二查询请求对应的第二特征。
6.根据权利要求5所述的方法,其特征在于,所述遍历所述多个第二特征,从所述多个第一特征中查找与对应第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为所述第一查询请求的查询结果包括:
从所述多个第一特征中查找与所述第一查询请求对应的第二特征相同的第一特征;
若查找到与所述第一查询请求对应的第二特征相同的第一特征,则将查找到的第一特征对应的头表数据中的查询内容作为所述查询结果;
若未查找到与所述第一查询请求对应的第二特征相同的第一特征,则按照所述多个第二查询请求对应的第二特征中、设置为所述第一值的第二特征值对应的查询字段的优先级由高到低的顺序,从所述多个第一特征中依次查找与每个所述第二查询请求对应的第二特征相同的第一特征,并将查找到的第一特征对应的头表数据中的查询内容作为所述查询结果。
7.根据权利要求1-6中任一项所述的方法,其特征在于,在所述接收第一查询请求之前,所述方法还包括:
从SQL数据库中读取所述SQL配置表中的所述多个头表数据,并将所述多个头表数据缓存在预设的缓存空间中;
其中,所述响应于所述第一查询请求,获取预设结构化查询语言SQL配置表中的多个头表数据,包括:
响应于所述第一查询请求,从所述预设的缓存空间获取所述多个头表数据。
8.根据权利要求1-6中任一项所述的方法,其特征在于,在所述将查找到的第一特征对应的头表数据中的查询内容作为所述第一查询请求的查询结果之后,所述方法还包括:
在预设的缓存空间中保存所述第一查询请求的查询结果。
9.根据权利要求8所述的方法,其特征在于,所述响应于所述第一查询请求,获取所述SQL配置表中的多个头表数据,包括:
响应于所述第一查询请求,判断所述预设的缓存空间中是否存储有所述第一查询请求对应的历史查询结果;
若所述预设的缓存空间中未存储所述历史查询结果,则获取所述多个头表数据。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
若所述预设的缓存空间中存储有所述历史查询结果,将所述历史查询结果作为所述第一查询请求的查询结果。
11.一种电子设备,其特征在于,包括:存储器和一个或多个处理器;所述存储器与所述处理器耦合;其中,所述存储器中还存储有计算机程序代码,所述计算机程序代码包括计算机指令,当所述计算机指令被所述处理器执行时,使得所述电子设备执行如权利要求1-10任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,包括计算机指令,当所述计算机指令在电子设备上运行时,使得所述电子设备执行如权利要求1-10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211435800.7A CN115658728B (zh) | 2022-11-16 | 2022-11-16 | 一种查询方法、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211435800.7A CN115658728B (zh) | 2022-11-16 | 2022-11-16 | 一种查询方法、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658728A CN115658728A (zh) | 2023-01-31 |
CN115658728B true CN115658728B (zh) | 2023-06-13 |
Family
ID=85019516
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211435800.7A Active CN115658728B (zh) | 2022-11-16 | 2022-11-16 | 一种查询方法、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658728B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241101A (zh) * | 2018-08-31 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据库查询优化方法、装置、及计算机设备 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9529842B2 (en) * | 2009-12-28 | 2016-12-27 | International Business Machines Corporation | Dynamically creating queries to find related records in a database |
US9275155B1 (en) * | 2015-01-23 | 2016-03-01 | Attivio Inc. | Querying across a composite join of multiple database tables using a search engine index |
CN106776809B (zh) * | 2016-11-24 | 2020-05-01 | 中国银联股份有限公司 | 一种数据查询方法及系统 |
CN108228759B (zh) * | 2017-12-22 | 2021-07-27 | 金蝶软件(中国)有限公司 | 记录集的存储处理方法、装置、计算机设备和存储介质 |
CN111813804B (zh) * | 2019-04-11 | 2023-08-15 | 百度在线网络技术(北京)有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN112182021B (zh) * | 2020-11-03 | 2022-10-18 | 浙江大搜车软件技术有限公司 | 一种用户数据查询方法、装置和系统 |
US20220156245A1 (en) * | 2020-11-17 | 2022-05-19 | Intuit Inc. | System and method for managing custom fields |
CN112817969B (zh) * | 2021-01-14 | 2023-04-14 | 内蒙古蒙商消费金融股份有限公司 | 数据查询方法、系统、电子设备和存储介质 |
-
2022
- 2022-11-16 CN CN202211435800.7A patent/CN115658728B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109241101A (zh) * | 2018-08-31 | 2019-01-18 | 阿里巴巴集团控股有限公司 | 一种数据库查询优化方法、装置、及计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115658728A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107784044B (zh) | 表数据查询方法及装置 | |
CN101727465B (zh) | 分布式列存储数据库索引建立、查询方法及装置与系统 | |
US9959347B2 (en) | Multi-layer search-engine index | |
US9298775B2 (en) | Changing the compression level of query plans | |
CN100550019C (zh) | 面向对象的数据库访问方法及系统 | |
CN110659282B (zh) | 数据路由的构建方法、装置、计算机设备和存储介质 | |
CN111221840B (zh) | 数据处理方法及装置、数据缓存方法、存储介质、系统 | |
CN109766318B (zh) | 文件读取方法及装置 | |
CN111817722A (zh) | 数据压缩方法、装置及计算机设备 | |
CN114817651B (zh) | 数据存储方法、数据查询方法、装置和设备 | |
CN113553339A (zh) | 数据查询方法、中间件、电子装置和存储介质 | |
US8396858B2 (en) | Adding entries to an index based on use of the index | |
CN106844541B (zh) | 一种联机分析处理方法及装置 | |
US20100191730A1 (en) | Efficiency in processing queries directed to static data sets | |
CN115658728B (zh) | 一种查询方法、电子设备及存储介质 | |
CN115080684B (zh) | 网盘文档索引方法、装置、网盘及存储介质 | |
CN116680295A (zh) | 多数据库处理数据的方法、系统及装置 | |
CN111414527A (zh) | 相似项目的查询方法、装置及存储介质 | |
CN107133320B (zh) | 在Hive中连接运算的转化方法及装置 | |
CN116069810A (zh) | 数据查询方法、装置及终端设备 | |
CN113157629A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111078160B (zh) | 基于调用比例及响应时长的数据迁移存储方法及装置 | |
CN115114289A (zh) | 一种数据查询方法、装置及电子设备 | |
CN114547034A (zh) | 一种数据查询的方法、装置、设备及存储介质 | |
CN114064729A (zh) | 一种数据检索方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | 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 |