[发明专利]数据库的检索方法及装置在审
申请号: | 201710862402.6 | 申请日: | 2017-09-21 |
公开(公告)号: | CN110019192A | 公开(公告)日: | 2019-07-16 |
发明(设计)人: | 周正中 | 申请(专利权)人: | 阿里巴巴集团控股有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/245 |
代理公司: | 北京安信方达知识产权代理有限公司 11262 | 代理人: | 孙敬霞;栗若木 |
地址: | 英属开曼群岛大开*** | 国省代码: | 开曼群岛;KY |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 查询请求 检索 数据库 查询参数 检索方式 接收用户 判断结果 索引查询 索引 匹配 携带 引入 申请 | ||
一种数据库的检索方法及装置,包括:接收用户的查询请求,所述查询请求中携带有查询参数;基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。本申请至少能够减少索引引入的开销同时提高数据的检索速度。
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据库的检索方法及装置。
背景技术
为了提高数据的检索速度,通常的做法是对数据创建索引。但并不是所有的数据,创建索引都有加快检索速度的效果。针对数据库中的倾斜数据,如果通过索引扫描,需要按索引的顺序,先访问索引的叶子,再访问堆表的记录,扫描会非常慢,反而不如直接全表扫描数据。然而,相关技术在数据库中创建索引时,会对表中所有记录创建索引,不仅引入了开销,而且会使倾斜数据的检索速度更慢。
发明内容
本申请旨在至少解决相关技术中的技术问题之一。
本申请提供一种数据库的检索方法及装置,至少能够减少索引引入的开销同时提高数据的检索速度。
本申请采用如下技术方案:
一种数据库的检索方法,包括:
接收用户的查询请求,所述查询请求中携带有查询参数;
基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配;
根据所述判断结果,以所述查询请求对应的检索方式对所述数据库执行检索操作。
其中,以所述查询请求对应的检索方式对所述数据库执行检索操作,包括:在所述查询请求与所述数据库的索引查询条件相匹配时,确定所述查询请求支持索引扫描,以索引扫描的方式执行所述检索操作。
其中,所述基于所述查询参数,判断所述查询请求是否与所述数据库的索引查询条件相匹配,包括:将所述查询参数与预先确定的过滤值比较,所述过滤值为所述表的倾斜数据;在所述查询参数属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件不匹配;在所述查询参数不属于所述过滤值时,则确定所述查询请求与所述数据库的索引查询条件相匹配。
其中,所述方法还包括:根据数据库的表的表统计信息以及预先设定的索引条件,确定所述表的过滤值,并记录到所述表的索引信息中;所述表统计信息包括:所述表中出现频率最高的前M个字段值及其出现频率,所述M为预设值;所述索引条件为:出现频率高于N的字段值为所述过滤值,所述N为预设值;其中,M为不小于1的整数,N满足0<N<1。
其中,所述方法还包括:过滤所述查询参数对应的表数据中的所述过滤值,并针对过滤后的表数据中各字段值构建索引数据。
其中,所述方法还包括:在表数据发生更新时,确定所述表的新过滤值,并根据所述新过滤值、以及所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作;
其中,所述索引维护操作包括如下之一或两项:
删除所述索引信息中所述过滤值对应的索引页;
识别属于所述索引信息中的过滤值但不属于所述新过滤词的字段值,并为所识别出的字段值构建索引数据。
其中,所述执行索引维护操作之后,还包括:将所述新过滤值更新到所述表的索引信息中。
其中,所述根据所述新过滤值、和所述表的索引信息中已记录的过滤值,执行所述表的索引维护操作,包括:将所述新过滤值与所述表的索引信息中已记录的过滤值比较,在所述比较的结果为不一致时执行所述索引维护操作。
一种数据库的检索装置,包括:
接收模块,用于接收用户的查询请求,所述查询请求中携带有查询参数;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于阿里巴巴集团控股有限公司,未经阿里巴巴集团控股有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710862402.6/2.html,转载请声明来源钻瓜专利网。