CN104123354A - 一种基于MySQL数据库的查询优化方法 - Google Patents
一种基于MySQL数据库的查询优化方法 Download PDFInfo
- Publication number
- CN104123354A CN104123354A CN201410337753.1A CN201410337753A CN104123354A CN 104123354 A CN104123354 A CN 104123354A CN 201410337753 A CN201410337753 A CN 201410337753A CN 104123354 A CN104123354 A CN 104123354A
- Authority
- CN
- China
- Prior art keywords
- word
- array
- characters
- sql query
- keyword
- 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
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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供了一种基于MySQL数据库的查询优化方法,用以提高MySQL查询重用优化技术的利用率,包括如下步骤:S1、获得带有无效字符和/或大写字母的SQL查询语句;S2、计算SQL查询语句中每个单词的哈希值;S3、建立一数组,数组中存储单词的哈希值及该单词的前三个字符;S4、循环遍历SQL查询语句中的单词;S5、若找到SQL查询语句中存在一具有无效字符的单词;S6、若存在一单词,且该单词前3个字符与数组中提前储存的3个字符也相同,则判定所述单词为关键字,将此单词转化为规范化的小写形式;S7、输出关键词规范化的SQL查询语句;S8、若存在一单词,且该单词前3个字符与数组中提前储存的所有单词的前3个字符都不相同,判定所述单词为非关键字。
Description
技术领域
本发明涉及网络数据库技术领域,尤其涉及一种基于MySQL数据库的查询优化方法。
背景技术
随着网络数据库应用的日益广泛,越来越多的数据需要存储及查询,因此,数据库查询效率的高低会直接影响系统用户的应用,当数据库的数据量达到几十万甚至更多时,就会出现数据库的瓶颈问题,因此,考虑如何优化数据库的查询性能是十分必要的。
查询重用方法的研究对查询技术的优化具有重要的意义。MySQL数据库查询重用技术是利用查询缓存区存储查询语句的文本字符串和查询结果集,并且共享给所有客户端,通过对查询语句进行特定的Hash计算之后与结果集对应存放在查询缓存区中,以提高完全相同的Query语句的相应速度。即当MySQL服务器接收到同样的SQL语句时,会根据相应缓冲区中存储的内容把相应执行结果返回给客户端,如果没有找到相同的SQL语句时,会在查询缓冲区中分配一块区域用于存储新的SQL语句和查询结果集,以便下次利用。具体如何设置查询缓存的参数,可以参看前面介绍的参数配置。虽然启动查询重用功能会带来一定的额外开销,但最终查询效率能显著提高。
但由于是采用纯文本ASCII码存储重用SQL语句,因此要求SQL语句必须完全一致才能使用重用技术,存在查询重用性不高的缺点,如select*fromtest和Select*fromtest两条SQL语句仅仅是大小写不同,就会导致MySQL不能重用查询结果。
此外,如查询结果数据量不大时,利用缓存方法保存结果还是较好的,但如果查询数据量特别大时,若存储这些结果,会消耗大量内存资源,导致系统性能下降,是不合理的,因此,以上这些问题限制了MySQL查询重用技术的实际应用。
发明内容
针对以上分析的查询重用技术存在的问题,本发明提供了一种基于MySQL数据库的查询优化方法,提出了相应的改进措施,用以提高MySQL查询重用优化技术的利用率。
为实现上述目的,本发明采用如下技术方案:
一种基于MySQL数据库的查询优化方法,包括如下步骤:
S1、获得带有无效字符和/或大写字母的SQL查询语句;
S2、计算SQL查询语句中每个单词的哈希值;
S3、建立一数组,数组中存储单词的哈希值及该单词的前三个字符,使用所述单词的哈希值作为数组的下标值,使哈希值与数组的下标匹配;
S4、循环遍历SQL查询语句中的单词;
S5、若找到SQL查询语句中存在一具有无效字符的单词,判定所述单词为非关键字,删除非关键字中的无效字符,转入步骤S4;
S6、若存在一单词,且该单词前3个字符与数组中提前储存的3个字符也相同,则判定所述单词为关键字,将此单词转化为规范化的小写形式,转入步骤S7;
S7、输出关键词规范化的SQL查询语句;
S8、若存在一单词,且该单词前3个字符与数组中提前储存的所有单词的前3个字符都不相同,判定所述单词为非关键字,转入步骤S4。
进一步的,所述的无效字符,包括多余的空格字符、回车字符。
有益效果:本方法消除了因SQL语句必须完全一致才能使用重用技术而导致的查询重用性不高的缺点,提高了MySQL查询重用优化技术的利用率。
附图说明
图1为本方法的流程图。
具体实施方式
下面结合附图及具体实施例对本发明进一步说明。
如图1所示,一种基于MySQL数据库的查询优化方法,包括如下步骤:
S1、获得带有无效字符和/或大写字母的SQL查询语句;
S2、计算SQL查询语句中每个单词的哈希值;
S3、建立一数组,数组中存储单词的哈希值及该单词的前三个字符,使用所述单词的哈希值作为数组的下标值,使哈希值与数组的下标匹配;
S4、循环遍历SQL查询语句中的单词;
S5、若找到SQL查询语句中存在一具有无效字符的单词,判定所述单词为非关键字,删除非关键字中的无效字符,转入步骤S4;
S6、若存在一单词,且该单词前3个字符与数组中提前储存的3个字符也相同,则判定所述单词为关键字,将此单词转化为规范化的小写形式,转入步骤S7;
S7、输出关键词规范化的SQL查询语句;
S8、若存在一单词,且该单词前3个字符与数组中提前储存的所有单词的前3个字符都不相同,判定所述单词为非关键字,转入步骤S4。
进一步的,所述的无效字符,包括多余的空格字符、回车字符。
针对MySQL数据库纯文本存储的查询语句重用性不高的问题,本实施例提出一种改进措施—Querykey算法。主要针对查询语句中出现的一些无效字符以及一些大小写不规范化的字符,进行处理,本方法设计一函数:hashkey(),该函数首先将SQL查询的单词的hash值计算出来,然后将hashkey()返回值加上该单词的前3个字母,将该单词的hash值与该单词的前三个字母存放到一数组arrhash[100]中,数组下标为该单词的hash值。其中存放关键字的前3个字母的原因是为了避免查询语句中的非关键字经过函数hashkey()计算后得到的值与SQL的某关键字的hash值相同,导致无法正确处理。当对输入的SQL查询语句进行扫描时,系统首先通过hashkey()计算每个单词的hash值,然后通过hash值与arrhash[100]数组下标进行匹配,若存在且该单词前3个字符与分量中提前储存的3个字符也相同,则认为找到该关键字,并将其转化为规范化的小写形式,最后输出。
Claims (2)
1.一种基于MySQL数据库的查询优化方法,其特征在于:包括如下步骤:
S1、获得带有无效字符和/或大写字母的SQL查询语句;
S2、计算SQL查询语句中每个单词的哈希值;
S3、建立一数组,数组中存储单词的哈希值及该单词的前三个字符,使用所述单词的哈希值作为数组的下标值,使哈希值与数组的下标匹配;
S4、循环遍历SQL查询语句中的单词;
S5、若找到SQL查询语句中存在一具有无效字符的单词,判定所述单词为非关键字,删除非关键字中的无效字符,转入步骤S4;
S6、若存在一单词,且该单词前3个字符与数组中提前储存的3个字符也相同,则判定所述单词为关键字,将此单词转化为规范化的小写形式,转入步骤S7;
S7、输出关键词规范化的SQL查询语句;
S8、若存在一单词,且该单词前3个字符与数组中提前储存的所有单词的前3个字符都不相同,判定所述单词为非关键字,转入步骤S4。
2.如权利要求1所述的一种基于MySQL数据库的查询优化方法,其特征在于:所述的无效字符,包括多余的空格字符、回车字符。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410337753.1A CN104123354A (zh) | 2014-07-15 | 2014-07-15 | 一种基于MySQL数据库的查询优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410337753.1A CN104123354A (zh) | 2014-07-15 | 2014-07-15 | 一种基于MySQL数据库的查询优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104123354A true CN104123354A (zh) | 2014-10-29 |
Family
ID=51768765
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410337753.1A Pending CN104123354A (zh) | 2014-07-15 | 2014-07-15 | 一种基于MySQL数据库的查询优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104123354A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018130142A1 (zh) * | 2017-01-16 | 2018-07-19 | 中国银联股份有限公司 | 用于数据库语句的语句解析方法 |
CN109325043A (zh) * | 2018-08-22 | 2019-02-12 | 北京小度信息科技有限公司 | 一种标记sql语句的方法、装置和电子设备 |
CN113836171A (zh) * | 2021-09-27 | 2021-12-24 | 北京金山云网络技术有限公司 | 数据脱敏方法、装置、电子设备及可读存储介质 |
CN116303405A (zh) * | 2023-05-12 | 2023-06-23 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
US20110202560A1 (en) * | 2010-02-16 | 2011-08-18 | Microsoft Corporation | Expressing and executing semantic queries within a relational database |
CN102902778A (zh) * | 2012-09-28 | 2013-01-30 | 用友软件股份有限公司 | 查询语句优化装置和查询语句优化方法 |
-
2014
- 2014-07-15 CN CN201410337753.1A patent/CN104123354A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021874A (zh) * | 2007-03-21 | 2007-08-22 | 金蝶软件(中国)有限公司 | 一种对查询sql请求进行优化的方法及装置 |
US20110202560A1 (en) * | 2010-02-16 | 2011-08-18 | Microsoft Corporation | Expressing and executing semantic queries within a relational database |
CN102902778A (zh) * | 2012-09-28 | 2013-01-30 | 用友软件股份有限公司 | 查询语句优化装置和查询语句优化方法 |
Non-Patent Citations (2)
Title |
---|
张知青: "基于关系数据库的查询方法及优化技术分析", 《煤炭技术》 * |
谷伟 等: "基于MySql的查询优化技术研究", 《微型电脑应用》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018130142A1 (zh) * | 2017-01-16 | 2018-07-19 | 中国银联股份有限公司 | 用于数据库语句的语句解析方法 |
US10896180B2 (en) | 2017-01-16 | 2021-01-19 | China Unionpay Co., Ltd. | Statement parsing method for database statement |
CN109325043A (zh) * | 2018-08-22 | 2019-02-12 | 北京小度信息科技有限公司 | 一种标记sql语句的方法、装置和电子设备 |
CN113836171A (zh) * | 2021-09-27 | 2021-12-24 | 北京金山云网络技术有限公司 | 数据脱敏方法、装置、电子设备及可读存储介质 |
CN116303405A (zh) * | 2023-05-12 | 2023-06-23 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
CN116303405B (zh) * | 2023-05-12 | 2023-11-10 | 深圳竹云科技股份有限公司 | 一种数据查重方法、装置、计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109299102B (zh) | 一种基于Elastcisearch的HBase二级索引系统及方法 | |
CN104516979B (zh) | 一种基于二次检索的数据查询方法及系统 | |
CN107291807B (zh) | 一种基于图遍历的sparql查询优化方法 | |
CN104317966B (zh) | 一种用于电力大数据快速组合查询的动态索引方法 | |
CN107784044B (zh) | 表数据查询方法及装置 | |
EP3285178A1 (en) | Data query method in crossing-partition database, and crossing-partition query device | |
CN102521334B (zh) | 一种基于分类特性和平衡二叉树的数据存储、查询方法 | |
CN103473267A (zh) | 数据存储查询方法及系统 | |
CN105138661A (zh) | 一种基于Hadoop的网络安全日志k-means聚类分析系统及方法 | |
CN107368527B (zh) | 基于数据流的多属性索引方法 | |
CN106777343A (zh) | 增量分布式索引系统和方法 | |
US20140222870A1 (en) | System, Method, Software, and Data Structure for Key-Value Mapping and Keys Sorting | |
KR102368775B1 (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
US9317556B2 (en) | Accelerating database queries containing bitmap-based conditions | |
CN106874425B (zh) | 基于Storm的实时关键词近似搜索算法 | |
CN104123354A (zh) | 一种基于MySQL数据库的查询优化方法 | |
CN112015741A (zh) | 一种海量数据的分库分表存储方法与装置 | |
CN104636389A (zh) | 实现Hbase数据库实时查询的方法和系统 | |
CN105335481A (zh) | 一种大规模字符串文本的后缀索引构造方法及装置 | |
CN101789027A (zh) | 一种基于dbms的元数据管理方法和元数据服务器 | |
CN102982099B (zh) | 一种个性化并行分词处理系统及其处理方法 | |
CN109597829B (zh) | 一种实现可搜索加密关系型数据库缓存的中间件方法 | |
CN100483409C (zh) | 一种字符数据的检索方法 | |
Ghotiya et al. | Migration from relational to NoSQL database | |
Von der Weth et al. | Multiterm keyword search in NoSQL systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141029 |