本申请涉及大数据领域及金融领域,尤其涉及一种优化tdsql脚本的方法、装置、设备及可读存储介质。
背景技术:
1、tdsql是一种可以支持大规模的数据存储和查询的分布式数据库,用来操作tdsql数据库的脚本文件称为tdsql脚本,tdsql脚本可以编写复杂的查询语句实现从tdsql数据库中获取所需的数据。目前,tdsql脚本中可能存在一种低效的查询操作,叫做笛卡尔积。笛卡尔积是指两个或多个表之间进行无条件的连接操作,即将一个表中的每一行与另一个表中的每一行进行组合,得到一个新的表。基于此,笛卡尔积可能会产生大量的中间结果,消耗大量的计算资源和时间,从而降低了查询性能。例如,如果数据表a有100行,数据表b有200行,那么数据表a和数据表b之间的笛卡尔积就会产生200万行的结果。因此,如何解决笛卡尔积带来的查询性能下降问题成为了亟须解决的问题。
技术实现思路
1、有鉴于此,本申请提供了一种优化tdsql脚本的方法、装置、设备及可读存储介质,用以优化tdsql脚本的笛卡尔积问题,以提高查询性能,其技术方案如下:
2、本申请第一方面提供了一种优化tdsql脚本的方法,该方法包括:
3、获取用户端发送的tdsql脚本;
4、解析tdsql脚本,以得到tdsql脚本指示连接的数据表的表信息以及tdsql脚本中的查询语句;
5、判断查询语句是否存在笛卡尔积;
6、当查询语句存在笛卡尔积时,根据表信息对查询语句进行笛卡尔积优化,并生成优化结果;
7、根据优化结果改写tdsql脚本,以得到优化后的tdsql脚本。
8、在本申请第一方面的一些实现方式中,解析tdsql脚本,包括:
9、通过语法解析器生成tdsql脚本的抽象语法树;
10、通过抽象语法树提取表信息以及查询语句。
11、在本申请第一方面的一些实现方式中,优化结果包括:限制条件优化结果,根据表信息对查询语句进行笛卡尔积优化,并生成优化结果,包括:
12、根据表信息对查询语句进行限制条件优化,并生成限制条件优化结果,限制条件优化结果用于指示在查询语句中添加以下至少一种限制条件:关联条件、筛选条件、排序条件以及分类条件。
13、在本申请第一方面的一些实现方式中,根据优化结果改写tdsql脚本包括:
14、根据限制条件优化结果在tdsql脚本中的查询语句添加脚本限制条件。
15、在本申请第一方面的一些实现方式中,优化结果包括:表连接顺序优化结果,根据表信息对查询语句进行笛卡尔积优化,并生成优化结果,包括:
16、根据表信息对查询语句进行表连接顺序优化,并生成表连接顺序优化结果,表连接顺序优化结果用于指示修改查询语句中的表连接顺序。
17、在本申请第一方面的一些实现方式中,根据优化结果改写tdsql脚本,包括:
18、根据表连接顺序优化结果修改tdsql脚本中的查询语句的表连接顺序。
19、在本申请第一方面的一些实现方式中,该方法还包括:
20、执行优化后的tdsql脚本,并将执行优化后的tdsql脚本得到的执行结果发送至用户端。
21、本申请第二方面提供了一种优化tdsql脚本的装置,该装置包括:
22、获取模块,用于获取用户端发送的tdsql脚本;
23、解析模块,用于解析tdsql脚本,以得到tdsql脚本指示连接的数据表的表信息以及tdsql脚本中的查询语句;
24、判断模块,用于判断查询语句是否存在笛卡尔积;
25、优化模块,用于当查询语句存在笛卡尔积时,根据表信息对查询语句进行笛卡尔积优化,并生成优化结果;
26、改写模块,用于根据优化结果改写tdsql脚本,以得到优化后的tdsql脚本。
27、本申请第三方面提供了一种优化tdsql脚本的设备,该设备包括:处理器和存储器;
28、处理器,用于执行存储器中存储的程序,运行如本申请第一方面所提供的方法。
29、本申请第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,其中,计算机程序被处理器执行时实现本申请第一方面所提供的方法。
30、经由上述方案可知,在本申请所提供的技术方案中,获取用户端发送的tdsql脚本;解析tdsql脚本,以得到tdsql脚本指示连接的数据表的表信息以及tdsql脚本中的查询语句;判断查询语句是否存在笛卡尔积;当查询语句存在笛卡尔积时,根据表信息对查询语句进行笛卡尔积优化,并生成优化结果;根据优化结果改写tdsql脚本,以得到优化后的tdsql脚本;从而实现了对于tdsql脚本的笛卡尔积操作的优化,降低了执行结果的结果集数量,提高了执行tdsql脚本进行查询的查询性能。
1.一种优化tdsql脚本的方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述解析所述tdsql脚本,包括:
3.根据权利要求1所述的方法,其特征在于,所述优化结果包括:限制条件优化结果,所述根据所述表信息对所述查询语句进行笛卡尔积优化,并生成优化结果,包括:
4.根据权利要求3所述的方法,其特征在于,所述根据所述优化结果改写所述tdsql脚本,包括:
5.根据权利要求1所述的方法,其特征在于,所述优化结果包括:表连接顺序优化结果,所述根据所述表信息对所述查询语句进行笛卡尔积优化,并生成优化结果,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述优化结果改写所述tdsql脚本,包括:
7.根据权利要求1至6任意一项所述的方法,其特征在于,所述方法还包括:
8.一种优化tdsql脚本的装置,其特征在于,所述装置包括:
9.一种优化tdsql脚本的设备,其特征在于,所述设备包括:处理器和存储器;
10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7中任意一项所述的方法。