本发明涉及数据库,特别是涉及一种数据库的查询优化方法、存储介质及设备。
背景技术:
1、结构化查询语言(structured query language,简称sql)是关系数据库的标准语言,是一种通用性极强的关系数据库语言。在数据库系统中,一个sql语句的执行一般需要依次经过解析器、优化器和执行器阶段才能返回结果。其中,在优化器阶段,数据库系统会根据查询语句的执行代价来选择较为优选的执行计划。
2、其中,数据库的统计信息是代价估算的重要依据。直方图是数据库统计信息的其中一种,直方图能够反映表中数据的数据分布情况,用于估算查询条件的选择率。但是,现有的直方图存在一定缺陷,估算的准确性有待进一步提高。
技术实现思路
1、本发明的一个目的是要提供一种能够解决上述任一问题的数据库的查询优化方法、存储介质及设备。
2、特别地,本发明提供了一种数据库的查询优化方法,包括:
3、读取需要生成统计信息的基础数据;
4、获取并记录基础数据中的最频值,最频值为基础数据中数量最多的数据值;
5、利用基础数据中除最频值之外的数据值生成等高直方图,等高直方图包括预设数量的桶,基础数据中除最频值之外的数据值按排序数量平均地放入预设数量的桶中;
6、判断是否存在跨桶的数据值,若是,将跨桶的数据值移至同一个桶中;
7、根据最频值和每个桶内的数据值生成统计信息。
8、可选地,根据最频值和每个桶内的数据值生成统计信息的步骤包括:
9、计算并记录最频值的频率值,最频值的频率值为最频值的数量与基础数据的数值总量的比值;
10、计算并记录每个桶的桶边界值个数以及桶边界值的频率值,桶边界值为桶中的起始数据值,桶边界值的频率值为桶边界值的数量与基础数据的数值总量的比值。
11、可选地,根据最频值和每个桶内的数据值生成统计信息的步骤之后包括:
12、获取查询语句并读取查询语句中的查询条件;
13、判断查询条件是否是最频值,若查询条件是所述最频值,从统计信息中获取最频值的频率值作为选择率。
14、可选地,判断查询条件是否是最频值的步骤之后包括:
15、若查询条件不是最频值,判断查询条件是否是桶边界值,若是,从统计信息中获取桶边界值的频率值作为选择率,若否,按照预设的计算方式计算查询条件的选择率。
16、可选地,按照预设的计算方式计算查询条件的选择率的步骤包括:
17、按照公式选择率=(1-所有最频值的频率值之和-所有桶边界值的频率值之和)/(基础数据中不同值的个数-最频值的个数-桶边界值的个数)计算查询条件的选择率。
18、可选地,将跨桶的数据值移至同一个桶中的步骤包括:
19、将跨桶的数据值移至跨桶的数据值作为起始数据值的桶中。
20、可选地,判断是否存在跨桶的数据值的步骤之后包括:
21、若否,执行根据最频值和每个桶内的数据值生成统计信息的步骤。
22、可选地,根据最频值和每个桶内的数据值生成统计信息的步骤包括:
23、计算并记录每个桶的桶内数据值个数以及桶内数据值的频率值,桶内数据值的频率值为桶内数据值的数量与基础数据的数值总量的比值。
24、根据本发明的另一个方面,还提供了一种机器可读存储介质,其上存储有机器可执行程序,机器可执行程序被处理器执行时实现根据上述任一项所述的数据库的查询优化方法。
25、根据本发明的又一个方面,还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并在处理器上运行的机器可执行程序,并且处理器执行机器可执行程序时实现根据上述任一项所述的数据库的查询优化方法。
26、本发明的数据库的查询优化方法通过获取并记录基础数据中的最频值后,将基础数据中除最频值之外的数据值生成等高直方图,然后,判断是否存在跨桶的数据值,在存在跨桶的数据值的情况下,将跨桶的数据值移至同一个桶中,从而形成新的直方图。最后,根据最频值和每个桶内的数据值生成统计信息。所以,在一方面,保证了直方图的边界值均不会跨桶,从而,对于针对直方图的边界值的查询条件来说,有助于提高代价估算的准确性,进而有助于选择更加正确的执行计划。另一方面,因为对于出现频次较高的数据值来说,更容易出现在不同的桶中,而且,在调整直方图后,出现频次较高的数据值放入同一桶中,会导致整个直方图的数据分布出现较大倾斜。所以,先利用基础数据中除最频值之外的数据值生成等高直方图,能够避免等高直方图中存在出现频次过高的数据值,从而避免调整后的直方图出现较大的数据倾斜。
27、根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
1.一种数据库的查询优化方法,包括:
2.根据权利要求1所述的数据库的查询优化方法,其中,所述根据所述最频值和每个所述桶内的数据值生成统计信息的步骤包括:
3.根据权利要求2所述的数据库的查询优化方法,其中,所述根据所述最频值和每个所述桶内的数据值生成统计信息的步骤之后包括:
4.根据权利要求3所述的数据库的查询优化方法,其中,所述判断所述查询条件是否是所述最频值的步骤之后包括:
5.根据权利要求4所述的数据库的查询优化方法,其中,所述按照预设的计算方式计算所述查询条件的选择率的步骤包括:
6.根据权利要求1所述的数据库的查询优化方法,其中,所述将所述跨桶的数据值移至同一个桶中的步骤包括:
7.根据权利要求1所述的数据库的查询优化方法,其中,所述判断是否存在跨桶的数据值的步骤之后包括:
8.根据权利要求1所述的数据库的查询优化方法,其中,所述根据所述最频值和每个所述桶内的数据值生成统计信息的步骤包括:
9.一种机器可读存储介质,其上存储有机器可执行程序,所述机器可执行程序被处理器执行时实现根据权利要求1至8任一项所述的数据库的查询优化方法。
10.一种计算机设备,包括存储器、处理器及存储在所述存储器上并在所述处理器上运行的机器可执行程序,并且所述处理器执行所述机器可执行程序时实现根据权利要求1至8任一项所述的数据库的查询优化方法。