CN109542931A - 一种基于正则表达式提高sql数据库精确查询效率的方法 - Google Patents
一种基于正则表达式提高sql数据库精确查询效率的方法 Download PDFInfo
- Publication number
- CN109542931A CN109542931A CN201811407443.7A CN201811407443A CN109542931A CN 109542931 A CN109542931 A CN 109542931A CN 201811407443 A CN201811407443 A CN 201811407443A CN 109542931 A CN109542931 A CN 109542931A
- Authority
- CN
- China
- Prior art keywords
- regular expression
- parameter
- sql
- database
- search efficiency
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于正则表达式提高sql数据库精确查询效率的方法,涉及数据库技术领域,所述方法包括以下步骤:步骤1:获取一个用于精确查询所需的参数;步骤2:根据条件字段在数据库中对应的值来编写与之相匹配的正则表达式;步骤3:将步骤1获取的参数值转换为字符串并查找与之相匹配的正则表达式;步骤4:调用只包含与正则表达式所匹配的条件字段的sql语句并且执行。本发明与常规的查询方法不同之处在于,当参数与正则表达式匹配之后,就不需要再调用通常使用的where...or...or...语句来执行,而可以直接调用只包含正则表达式所匹配条件字段的sql语句,此时执行的sql语句不用再像之前对所有的条件字段进行一一判断,以此来查找出符合条件的数据。
Description
技术领域
本发明涉及数据库技术领域,具体的说,是一种基于正则表达式提高sql数据库精确查询效率的方法。
背景技术
Sql是专为数据库而建立的操作命令集,是一种功能齐全的数据库语言。其功能强大、简单易学、使用方便,已经成为了数据库操作的基础,并且现在几乎所有的数据库均支持SQL。
但sql型数据库在按条件进行精确查询时存在一个缺陷:如MySQL数据库在执行带有条件的sql语句进行精确查询时,会对所有的条件字段进行一一判断,以此来查找出符合条件的数据(例如输入一个参数“1234567”,sql语句为:select*from table_name wherename=“1234567”or phone=“1234567”,此时的sql语句在数据库中查找数据时会在name及password字段下去匹配符合name=“1234567”或phone=“1234567”的值)。但这样产生的一个问题是:明显我们想要查询的是phone=“1234567”的数据,但此时sql语句执行却会在条件中所有字段下去匹配该参数,导致不必要的操作,增加了sql语句执行的时间,降低了程序的运行速度。
发明内容
本发明的目的在于提供一种基于正则表达式提高sql数据库精确查询效率的方法,用于解决现有技术中通过sql语句查询数据库时会对并不在查找范围内的数据也进行匹配而导致用sql语句数据库查询效率低下,运行时间长的问题。
本发明通过下述技术方案解决上述问题:
一种基于正则表达式提高sql数据库精确查询效率的方法,包括以下步骤:
步骤1:获取一个用于精确查询所需的参数;
步骤2:根据条件字段在数据库中对应的值来编写与之相匹配的正则表达式;
步骤3:将步骤1获取的参数值转换为字符串并查找与之相匹配的正则表达式;
步骤4:调用只包含与正则表达式所匹配的条件字段的sql语句并且执行。
本发明与常规的查询方法不同之处在于,当参数与正则表达式匹配之后,就不需要再调用通常使用的where...or...or...语句来执行,而可以直接调用只包含正则表达式所匹配条件字段的sql语句,此时执行的sql语句不用再像之前对所有的条件字段进行一一判断,以此来查找出符合条件的数据,而能直接在数据库中查找符合正则表达式的条件字段所对应的数据,这样能减少条件判断的次数,大大提高了精确查询时的速度,相比之下本发明不仅让查询语句变得更简洁还让查询数据库所花的时间更短,查询效率更高。
优选地,所述步骤1中获取的参数的类型包括整型、实型和字符串类型,获取的参数类型可以是各种各样的,但是通过本发明的方法都能进行查询,本方法适用于各种类型的参数的查询,使用方便快捷。
优选地,所述步骤3中采用toString()方法将步骤1获取的非字符串型参数转换为字符串型参数,因为数据库储存数据的方式都是以字符串类型进行存储,所以查询的时候要用字符串的类型进行匹配,对于不是字符串类型的参数用toString()方法可以快速的转换为字符串类型,以适应各种类型的参数的查询。
优选地,所述步骤2中编写的正则表达式在表中对应值为字母的为[a-zA-Z]*,对应值为数字的为[0-9]*,用正则表达式来分别匹配数字和字母,能够提升数据查询的准确性。
本发明与现有技术相比,具有以下优点及有益效果:
(1)本发明所提出的基于正则表达式提高sql数据库精确查询效率的方法,与常规的查询方法不同之处在于,当参数与正则表达式匹配之后,就不需要再调用通常使用的where...or...or...语句来执行,而可以直接调用只包含正则表达式所匹配条件字段的sql语句,此时执行的sql语句不用再像之前对所有的条件字段进行一一判断,以此来查找出符合条件的数据,而能直接在数据库中查找符合正则表达式的条件字段所对应的数据,这样能减少条件判断的次数,大大提高了精确查询时的速度。
(2)本发明采用toString()方法将步骤1获取的非字符串型参数转换为字符串型参数,因为数据库储存数据的方式都是以字符串类型进行存储,所以查询的时候要用字符串的类型进行匹配,对于不是字符串类型的参数用toString()方法可以快速的转换为字符串类型,以适应各种类型的参数的查询,简化查询语句的同时还。
附图说明
图1为本发明基于正则表达式提高sql数据库精确查询效率的方法总流程图;
图2为本发明实施例1中的查询结果示意图。
具体实施方式
下面结合实施例对本发明作进一步地详细说明,但本发明的实施方式不限于此。
实施例1:
结合附图1所示,一种基于正则表达式提高sql数据库精确查询效率的方法,其特征在于,所述方法包括以下步骤:
步骤1:获取任意一个用于精确查询所需的参数;
步骤2:根据条件字段在数据库中对应的值来编写与之相匹配的正则表达式;
步骤3:将步骤1获取的参数值通过toString()方法转换为字符串,并查找与之相匹配的正则表达式;
步骤4:调用只包含与正则表达式所匹配的条件字段的sql语句并且执行。
本发明与常规的查询方法不同之处在于,当参数与正则表达式匹配之后,就不需要再调用通常使用的where...or...or...语句来执行,而可以直接调用只包含正则表达式所匹配条件字段的sql语句,此时执行的sql语句不用再像之前对所有的条件字段进行一一判断,以此来查找出符合条件的数据,而能直接在数据库中查找符合正则表达式的条件字段所对应的数据,这样能减少条件判断的次数,大大提高了精确查询时的速度,相比之下本发明不仅让查询语句变得更简洁还让查询数据库所花的时间更短,查询效率更高。
基于上述方法,使用MySQL自带的数据库world中的city表,其中的name字段和population字段用来进行精确查询:
第一步,请求一个用于精确查询的参数,这个参数不能确定其在数据表中的所属字段;
第二步,根据数据表中用于精确查询的各字段值来编写出所对应的正则表达式,这里使用MySQL自带的数据库world中的city表,其中的name字段和population字段用来进行精确查询。对应name字段值的简单正则表达式:[a-zA-Z]*,对应population字段值的简单正则表达式:[0-9]*;
第三步,从请求处接收一个查询使用的参数query=“Enschede”,该参数全部由字母所组成,判断出参数与name字段所对应的正则表达式所匹配;
第四步,从第三步所得结果知道此时应调用使用name字段来进行查询的sql语句:select*from city where name=’Ensched。
结合附图2所示的查询结果,单字段的查询用时为0.003秒,多字段的查询用时为0.013秒,耗时非常短,大幅度的提升了查询效率。
尽管这里参照本发明的解释性实施例对本发明进行了描述,上述实施例仅为本发明较佳的实施方式,本发明的实施方式并不受上述实施例的限制,应该理解,本领域技术人员可以设计出很多其他的修改和实施方式,这些修改和实施方式将落在本申请公开的原则范围和精神之内。
Claims (4)
1.一种基于正则表达式提高sql数据库精确查询效率的方法,其特征在于,所述方法包括以下步骤:
步骤1:获取一个用于精确查询所需的参数;
步骤2:根据条件字段在数据库中对应的值来编写与之相匹配的正则表达式;
步骤3:将步骤1获取的参数值转换为字符串并查找与之相匹配的正则表达式;
步骤4:调用只包含与正则表达式所匹配的条件字段的sql语句并且执行。
2.根据权利要求1所述的基于正则表达式提高sql数据库精确查询效率的方法,其特征在于:所述步骤1中获取的参数的类型包括整型、实型和字符串类型。
3.根据权利要求1所述的基于正则表达式提高sql数据库精确查询效率的方法,其特征在于:所述步骤3中采用toString()方法将步骤1获取参数转换为字符串型参数。
4.根据权利要求1所述的基于正则表达式提高sql数据库精确查询效率的方法,其特征在于:所述步骤2中编写的正则表达式在表中对应值为字母的为[a-zA-Z]*,对应值为数字的为[0-9]*。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407443.7A CN109542931A (zh) | 2018-11-23 | 2018-11-23 | 一种基于正则表达式提高sql数据库精确查询效率的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811407443.7A CN109542931A (zh) | 2018-11-23 | 2018-11-23 | 一种基于正则表达式提高sql数据库精确查询效率的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109542931A true CN109542931A (zh) | 2019-03-29 |
Family
ID=65849451
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811407443.7A Pending CN109542931A (zh) | 2018-11-23 | 2018-11-23 | 一种基于正则表达式提高sql数据库精确查询效率的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109542931A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744891A (zh) * | 2013-12-23 | 2014-04-23 | 大唐软件技术股份有限公司 | 一种数据查询方法和*** |
CN107577731A (zh) * | 2017-08-24 | 2018-01-12 | 南京多伦科技股份有限公司 | 一种接入不同空间数据库的方法及*** |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
CN108509658A (zh) * | 2018-04-28 | 2018-09-07 | 中国联合网络通信集团有限公司 | 一种xml文件的解析方法和装置 |
-
2018
- 2018-11-23 CN CN201811407443.7A patent/CN109542931A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103744891A (zh) * | 2013-12-23 | 2014-04-23 | 大唐软件技术股份有限公司 | 一种数据查询方法和*** |
CN107577731A (zh) * | 2017-08-24 | 2018-01-12 | 南京多伦科技股份有限公司 | 一种接入不同空间数据库的方法及*** |
CN108446289A (zh) * | 2017-09-26 | 2018-08-24 | 北京中安智达科技有限公司 | 一种支持异构数据库的数据检索方法 |
CN108509658A (zh) * | 2018-04-28 | 2018-09-07 | 中国联合网络通信集团有限公司 | 一种xml文件的解析方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI729472B (zh) | 特徵詞的確定方法、裝置和伺服器 | |
CN106649503A (zh) | 一种基于sql的查询方法及*** | |
KR102685008B1 (ko) | 검색 모델의 훈련 방법, 목표 대상의 검색 방법 및 그 장치 | |
CN111782265B (zh) | 基于字段级血缘关系的软件资源***及其建立方法 | |
CN111444220B (zh) | 规则驱动和数据驱动相结合的跨平台sql查询优化方法 | |
US20170242884A1 (en) | Method and Apparatus for Determining SQL Execution Plan | |
CN111046193A (zh) | 一种基于元学习的领域知识图谱补全方法 | |
US20230082563A1 (en) | Data processing method and data processing apparatus | |
CN105718521A (zh) | 一个基于Wavelet Tree的网络数据包索引*** | |
CN110955712A (zh) | 基于多数据源的开发api处理方法及装置 | |
CN105378724A (zh) | 一种数据查询方法、装置及*** | |
CN112162986B (zh) | 一种并行top-k范围skyline查询方法和*** | |
CN109542931A (zh) | 一种基于正则表达式提高sql数据库精确查询效率的方法 | |
CN109829051A (zh) | 一种数据库相似语句筛选的方法和装置 | |
CN108536819B (zh) | 整型列与字符串比较的方法、装置、服务器及存储介质 | |
CN110263108A (zh) | 一种基于道路网的关键词Skyline模糊查询方法及*** | |
CN116185389A (zh) | 一种代码生成方法、装置、电子设备及介质 | |
CN112667632B (zh) | 一种元数据处理方法及装置 | |
CN113625884B (zh) | 一种输入词推荐方法、装置、服务器及存储介质 | |
CN115827663A (zh) | 一种物化视图的方法以及相关设备 | |
CN108898321B (zh) | 一种基于语义模板的制造技术问题标准冲突参数获取方法 | |
CN105930162B (zh) | 一种基于子图搜索的特征定位方法 | |
CN109284097A (zh) | 实现复杂数据分析的方法、设备、***及存储介质 | |
CN106126542B (zh) | 一种访问路径的管理方法 | |
CN110866073A (zh) | Poi数据库的构建和poi搜索 |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190329 |
|
RJ01 | Rejection of invention patent application after publication |