将列与函数关联以优化查询执行的方法和查询优化服务器转让专利

申请号 : CN201680004121.0

文献号 : CN107004034B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 迪尼普·库马尔库马尔·拉吉夫·拉丝拓吉尼雅玛拉·斯瑞坎塔雅

申请人 : 华为技术有限公司

摘要 :

本发明涉及一种将列与函数关联以优化查询执行的方法。所述方法包括查询优化服务器接收包含一个或多个列的信息以及所述一个或多个列的每个的函数信息的数据定义语句。所述查询优化服务器将具有函数信息的列与对应的预定义函数相关联并将其存储在存储器中。一旦接收到包含与列关联的函数的查询,所述查询优化服务器就将该函数与存储在存储器中的预定义函数作对比。基于所述对比,所述查询优化服务器从存储器中访问该预定义函数用于执行查询。

权利要求 :

1.一种将列与函数关联以优化查询执行的方法,其特征在于,所述方法包括:查询优化服务器接收包含一个或多个列的信息的定义语句,所述列用于建立表,所述表中信息以行和列形式组织,所述定义语句包括所述一个或多个列中的每列的函数信息;

所述查询优化服务器确定所述定义语句中的所述一个或多个列的每个是否存在一个或多个函数信息,所述函数信息包括与列相关联的数学函数;以及所述查询优化服务器将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联,用于优化查询执行,所述预定义函数是基于所述函数信息预编译的数学函数。

2.根据权利要求1所述的方法,其特征在于,所述一个或多个列和所述对应的预定义函数存储在存储器中。

3.根据权利要求1所述的方法,其特征在于,还包括:

所述查询优化服务器接收包括与一个或多个列相关联的一个或多个函数的查询语句用于查询数据库;

所述查询优化服务器将与所述一个或多个列相关联的所述一个或多个函数与存储器中与一个或多个列相关联的预定义函数作对比;以及所述查询优化服务器基于所述对比,从所述存储器中访问与所述一个或多个列相关联的所述预定义函数用于执行所述查询语句。

4.根据权利要求1中所述的方法,其特征在于,所述一个或多个函数信息由用户在所述定义语句中提供。

5.一种查询优化服务器,将列与函数关联以优化查询执行,其特征在于,包括:接收模块,用于从一个或多个客户端设备接收包含一个或多个列的信息的定义语句,所述列用于建立表,所述表中信息以行和列形式组织,所述定义语句包括所述一个或多个列中的每列的函数信息;

确定模块,用于确定所述定义语句中所述一个或多个列的每个中是否存在一个或多个函数信息,所述函数信息包括与列相关联的数学函数;以及关联模块,用于将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联用于优化查询执行,所述预定义函数是基于所述函数信息预编译的数学函数。

6.根据权利要求5所述的查询优化服务器,其特征在于,其将所述一个或多个列以及所述对应的预定义函数存储在存储器中。

7.根据权利要求5所述的查询优化服务器,其特征在于,所述一个或多个函数信息由用户在所述定义语句中提供。

8.根据权利要求5所述的查询优化服务器,其特征在于,所述接收模块还用于从所述一个或多个客户端设备接收包含与一个或多个列相关联的一个或多个函数的查询语句用于查询数据库。

9.根据权利要求8所述的查询优化服务器,其特征在于,还包括:对比模块,用于将与所述一个或多个列相关联的所述一个或多个函数与存储器中与一个或多个列相关联的预定义函数作对比;以及访问模块,用于基于所述对比,从所述存储器中访问与所述一个或多个列相关联的所述预定义函数用于执行所述一个或多个查询语句。

10.一种非瞬时性计算机可读介质,其特征在于,包括存储在其上的操作,当所述操作由至少一个处理单元处理时,查询优化服务器通过以下行为来执行一个或多个动作:接收包含一个或多个列的信息的定义语句,所述列用于建立表,所述表中信息以行和列形式组织,所述定义语句包括所述一个或多个列中的每列的函数信息;

确定所述定义语句中的所述一个或多个列的每个中是否存在一个或多个函数信息,所述函数信息包括与列相关联的数学函数;以及将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联,用于优化查询执行,所述预定义函数是基于所述函数信息预编译的数学函数。

11.根据权利要求10所述的介质,其特征在于,所述操作还使得所述至少一个处理单元通过以下行为来执行一个或多个动作:接收包括与一个或多个列相关联的一个或多个函数的查询语句用于查询数据库;

将与所述一个或多个列相关联的所述一个或多个函数与存储器中与所述一个或多个列相关联的预定义函数作对比;以及基于所述对比,从所述存储器中访问与所述一个或多个列相关联的所述预定义函数用于执行所述查询语句。

说明书 :

将列与函数关联以优化查询执行的方法和查询优化服务器

技术领域

[0001] 本发明大体上涉及数据库管理系统,尤其是涉及一种将列与函数关联以优化查询执行的系统和方法。

背景技术

[0002] 通常,数据库中的数据使用查询来访问。查询是一种特定语法的语句,指定要从数据库中检索的数据。查询处理器通常用来处理查询,识别执行查询的最优计划,以及从数据库中检索与查询中指定的参数相匹配的数据。数据库查询和编程语言的一个示例为结构化查询语言(Structured Query Language,SQL),用于存储、检索和查询存储在关系数据库系统中的数据。
[0003] 目前,与average、sum、max、min等数学函数相关联的查询是通过在运行时调用函数管理器来执行的。根据查询中定义的每列数据类型,函数管理器在查询执行期间,会提供如average函数、sum函数、maximum函数和minimum函数等相应的数学函数。考虑下面的查询示例:
[0004] CREATE TABLE test(a int,b int,c varchar)--------------------(1)
[0005] SELECT AVG(a)FROM test WHERE b>100--------------------(2)
[0006] 在执行“Create”查询时,数据库中会建立一个具有三列的表,即列a、列b和列c。而对于执行“Select”查询,函数管理器在运行时确定列的类型“a”为整数。因此,必须调用整数平均值(Avg)函数来执行该查询。这就使得在执行过程中产生额外开销来使用函数管理器调用相应的数学函数,而这又会反过来影响查询执行的性能。
[0007] 为了克服上述问题,预定义并存储这些函数,以便在运行时它们能够直接被访问。但是,数学函数数目众多,表中的列数目也将非常庞大。因此,预编译和预定义函数的所有可能组合是非常困难的。

发明内容

[0008] 本发明的目的在于,在执行运行期间,直接通过预定义并访问函数来优化查询执行,所述函数与查询中提供的列相关联。
[0009] 本发明涉及一种将列与函数关联以优化查询执行的方法。该方法包括,查询优化服务器接收包含一个或多个列的信息的定义语句,所述列用于建立表。一旦接收到所述定义语句,所述查询优化服务器确定该定义语句中所述一个或多个列的每个是否存在一个或多个函数信息。如果该定义语句中提供了所述一个或多个函数信息,查询优化服务器将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联,来优化查询执行。
[0010] 在一个实施例中,本发明提供了一种查询优化服务器接收查询语句的方法。所述查询语句包括与一个或多个列相关联的一个或多个函数,用于查询数据库。一旦接收到所述查询语句,所述查询优化服务器将存储器中与所述一个或多个列相关联的预定义函数,与和一个或多个列相关联的一个或多个函数作对比。所述查询优化服务器基于所述对比,从存储器中访问与一个或多个列相关联的预定义函数,来执行所述查询语句。
[0011] 本发明提供一种查询优化服务器,将列与函数关联以优化查询执行。所述查询优化服务器包括接收模块、确定模块和关联模块。所述接收模块从一个或多个客户端设备接收包含一个或多个列的信息的定义语句,所述列用于建立表。所述接收模块也接收查询语句用于查询数据库。所述确定模块在接收到定义语句后,确定该定义语句中所述一个或多个列的每个是否存在一个或多个函数信息。所述关联模块将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联,来优化查询执行。
[0012] 在一个实施例中,所述查询优化服务器包括对比模块和访问模块。所述对比模块将与所述一个或多个列相关联的一个或多个函数与存储器中与一个或多个列相关联的预定义函数作对比。所述访问模块基于所述对比,从存储器中访问与一个或多个列相关联的预定义函数,用于执行所述一个或多个查询语句。
[0013] 本发明涉及一种非瞬时性计算机可读介质,其包括存储在其上的操作,当所述操作被至少一个处理器处理时,查询优化服务器执行接收包含一个或多个列的信息的定义语句的步骤,所述列用于建立表。所述方法还包括,确定定义语句中所述一个或多个列的每个是否存在一个或多个函数信息。一旦确定存在所述函数信息,查询优化服务器将具有所述一个或多个函数信息的所述一个或多个列的每个与相应的预定义函数相关联,来优化查询执行。
[0014] 在一个实施例中,所述指令还使得所述至少一个处理单元,通过接收包括与一个或多个列相关联的一个或多个函数的查询语句以查询数据库,来执行一个或多个动作。然后,执行将与所述一个或多个列相关联的一个或多个函数与存储器中与一个或多个列相关联的预定义函数作对比的动作。最后,基于所述对比,从存储器中访问与一个或多个列相关联的预定义函数,用于执行查询语句。
[0015] 本发明涉及一种计算机程序,用于在查询处理系统中完成一个或多个动作。所述计算机程序包括代码段,用于接收包含一个或多个列的信息的定义语句,所述列用于建立表;代码段,用于确定所述定义语句中的所述一个或多个列的每个是否存在一个或多个函数信息;以及代码段,用于将具有所述一个或多个函数信息的所述一个或多个列的每个与对应的预定义函数相关联,用于优化所述查询执行。
[0016] 在一个实施例中,本发明提供一种将数据定义语句中的列与函数关联的方法。用户可以为数据定义语句中的每列提供一个或多个函数信息。基于该一个或多个函数信息,对应的预定义函数则与所述列相关联并存储在存储器中。当接收到包括与列相关联的函数的查询语句时,从存储器中直接访问对应的函数。因此,不需要调用函数管理器来执行所述查询语句。这就提高了查询执行的性能。此外,所述一个或多个预定义函数是基于数据定义语句中的函数信息来存储在存储器中的。这就减少了对计算资源的需要,因为不再需要在存储器中预定义所有函数。
[0017] 上述发明内容仅是说明性的,并且无意以任何方式限制本发明。除了上述说明性的方面和特征,进一步的方面和特征通过参考附图和下面的详细描述将变得显而易见。

附图说明

[0018] 本发明的新颖的特点和特征在所附权利要求中进行阐述。但是本发明自身、优选的使用方式,及其其它目的和优势,也可以通过参考以下说明性实施例的详细说明结合附图得到最好的理解。现参照附图仅通过示例描述一个或更多的实施例。
[0019] 图1示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的示例性网络架构;
[0020] 图2a示出了根据本发明的一些实施例的一种优化查询执行的包括处理器和存储器的查询优化服务器的框图;
[0021] 图2b示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的查询优化服务器的详细框图;
[0022] 图3a-3b示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的方法的示例性框图;
[0023] 图4a示出了根据本发明的一些实施例的一种将列与函数关联的方法的流程图;
[0024] 图4b示出了根据本发明的一些实施例的一种在运行时直接访问函数的方法的流程图;以及
[0025] 图5示出了一种用于实现符合本发明的实施例的示例性计算机系统的框图。
[0026] 附图描绘本发明的实施例仅用于说明目的。本领域技术人员将很容易从以下描述中意识到本文中示出的结构和方法的替代性实施例可以在不脱离本文所述的本发明的原理的情况下采用。

具体实施方式

[0027] 上文相当宽泛地概述了本发明的实施例的特征和技术优点,目的是让人能更好地理解下文对本发明的详细描述。下文中将描述本发明的额外特征和优点,其形成本发明的权利要求书的标的物。所属领域的技术人员应了解,所公开的概念和具体方面可容易地用作修改或设计用于实现本发明的相同目的的其他结构的基础。所属领域的技术人员还应意识到,此类等效构造不脱离所附权利要求书中所提出的本发明的范围。根据以下说明结合附图内容可以更好地理解被视为本发明的特点,无论是关于其组成还是操作方法,的新颖特征以及进一步的目的和优势。但是,应明确了解,提供的每个图仅用于说明性和描述性目的,并非旨在对本发明进行限制。
[0028] 本发明的实施例涉及一种将列与函数关联以优化查询执行的方法和查询优化服务器。用户提供包含一个或多个列的信息的定义语句,所述列用于在数据库中建立表。查询优化服务器接收并执行该定义语句,使用所述一个或多个列的信息在数据库中建立表。查询优化服务器还确定该定义语句中所述一个或多个列的每个是否存在一个或多个函数信息的。所述一个或多个函数信息由用户在该定义语句中定义。举例来说,所述函数信息包括如average(avg)、maximum(max)、minimum(min)和sum等数学函数。如果所述函数信息出现在该定义语句中,查询优化服务器则将对应的预定义函数与具有该函数信息的所述一个或多个列相关联。关于所述一个或多个列的每个的信息以及对应的预定义函数都存储在存储器中。因此,查询优化服务器则接收包括与一个或多个列相关联的一个或多个函数的查询语句来查询数据库。一旦接收到该查询语句,查询优化服务器就会将与所述一个或多个列相关联的一个或多个函数跟与所述一个或多个列相关联的预定义函数作对比。如果与所述一个或多个列相关联的一个或多个函数跟所述预定义函数相匹配,那么查询优化服务器就从存储器中访问预定义函数来执行该查询语句。
[0029] 此后,本发明各实施例借助于示例性示图和一个或多个示例进行解释。然而,这些示例性示图和示例仅提供用于说明性目的以便更好地理解本发明,而不应当认为是对本发明的范围的限制。
[0030] 图1示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的示例性网络架构。
[0031] 如图1所示,网络架构100包括将列与函数关联以优化查询执行的查询优化服务器105。该网络架构100还包括用户设备1011,1012,……101N(统称为用户设备101)和连接到查询优化服务器105的数据库107。如图1所示,用户设备101经过通信网络103通信耦合到查询优化服务器105,以促进访问数据库107来获取信息。
[0032] 用户设备101包括使用查询优化服务器105的服务的应用程序。具有该应用程序的用户设备101可在各种计算系统中实现,如手提电脑、台式电脑、笔记本电脑、工作站、大型计算机、服务器、网络服务器等等。用户设备101可被机构的各类利益相关者和终端用户使用,如项目经理、主管和员工。在一个实施例中,关联用户使用用户设备101创建一个或多个查询。用户设备101安装有一个或多个接口(未在图1中示出)用于通过网络103与查询优化服务器105通信。在一个实施例中,查询优化服务器105可以充当用户设备101的作用。因此,所述一个或多个查询就在查询优化服务器105被直接接收并用于查询执行和用户交互。
[0033] 数据库107以预定义的格式、结构或扩展来存储一个或多个建立的信息,例如但不限于平面文件、分级联机分析处理数据立方体、多维数据集、关系数据存储、联机分析处理(on-line analytical processing,OLAP)数据立方体和Excel文件。本领域技术人员应当理解的是,可以有任何数量的数据库来存储信息。
[0034] 图2a示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的包括处理器和存储器的查询优化服务器的框图。
[0035] 所述查询优化服务器105包括接口201、存储器203和处理器205。接口201与处理器205耦合,经过接口从一个或多个用户设备101接收数据。存储器203通信耦合至处理器205。
存储器203存储处理器可执行的指令,该指令在执行时可引起处理器205执行一个或多个步骤。在一个实施例中,处理器205从所述一个或多个用户设备101接收一个或多个定义语句。
所述一个或多个定义语句包括关于一个或多个列的信息,用于在数据库107中建立一个或多个表。所述表中信息以行和列形式组织。所述定义语句还包括每列的一个或多个函数信息。所述函数信息包括与列相关联的数学函数。处理器205基于所述函数信息,将所述列与对应的预定义函数关联。所述预定义函数是基于所述函数信息预编译的数学函数。所述预定义函数存储在存储器203中。处理器205还可从所述一个或多个用户设备101中接收一个或多个查询语句。所述一个或多个查询语句可包括与一个或多个列相关联的一个或多个函数。处理器205将与所述一个或多个列相关联的一个或多个函数,跟与一个或多个列相关联的预定义函数作对比。如果所述一个或多个函数与所述预定义函数相匹配,那么处理器205就访问所述预定义函数来执行所述查询语句。
[0036] 图2b示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的查询优化服务器的详细框图。
[0037] 在一个实施例中,查询优化服务器105从用户设备101接收数据。在一个示例中,所述数据可存储在存储器203中。在一种实现中,所述数据可包括列数据和函数数据。
[0038] 在一个实施例中,所述列数据可包括一个或多个列的信息,用于在数据库107中建立表。
[0039] 在一个实施例中,所述函数数据可包括所述一个或多个列的每个的一个或多个函数的信息。举例来说,所述函数可包括但不限于average、sum、minimum、aggregate和maximum等数学函数。本领域技术人员应当理解的是,任何其他涉及调用函数管理器的函数都可在本发明中使用。
[0040] 存储器203还可包括其他数据,这些数据可包括由模块产生的临时数据和临时文件,这些模块用于执行查询优化服务器的各种函数。
[0041] 在一个实施例中,所述数据可以各种数据结构的形式存储在存储器203中。此外,上述数据可使用如关系数据模型或层次数据模型等数据模型来组织。在一个实施例中,所述数据由查询优化服务器105的模块来处理。
[0042] 在一个实施例中,从所述一个或多个用户设备101所接收到的数据由所述查询优化服务器105的模块来处理。所述模块可存储在存储器203中。本文使用的术语模块指的是执行一个或多个软件程序或固件程序的专用集成电路(application specific integrated circuit,ASIC)、电子电路、处理器(共享,专用或组处理器)和存储器203;组合逻辑电路;和/或提供所描述的功能的其他组件。
[0043] 所述模块可包括,例如,接收模块207、确定模块209、关联模块211、对比模块213、访问模块215和其他模块217。在一个实施例中,所述模块可独立地执行所描述的函数或作为处理器205的一部分来执行。
[0044] 在一个实施例中,接收模块207用于从所述一个或多个用户设备101来接收数据定义语句和数据查询语句。所述数据定义语句包括关于一个或多个列的信息,用于在数据库107中建立表。所述数据定义语句还包括与一个或多个与列相关联的一个或多个函数信息。
在一个实施例中,关于一个或多个函数的信息在所述数据定义语句中被提供作为“HINT”。
举例来说,如下面式(3)中给出的数据定义语句。下面的数据定义语句用于建立名为“test”的表。在下面的数据定义语句中定义了三个列,分别名为“col a”、“col b”和“col c”。数学函数average(avg)和sum与“col a”相关联,数学函数(max)与“col b”相关联。
[0045] CREATE TABLE test(a int,b int,c varchar)/*HINT:a(sum),a(avg),b(max)*/---------------(3)
[0046] 所述数据查询语句可包括与一个或多个列相关联的一个或多个函数。下面式(4)中给出了一个示例性的数据查询语句。下面的数据查询语句包括与“col a”相关联的函数(avg)。
[0047] SELECT AVG(a)FROM test WHERE b>100------------------------(4)
[0048] 确定模块209用于在式(1)中的数据定义语句中识别是否存在所述函数信息。举例来说,确定模块209识别出上述示例性数据定义语句中“col a”和“col b”存在函数信息“sum”、“avg”和“max”。
[0049] 关联模块211用于基于所述函数信息,将在数据定义语句中定义的列与对应的预定义函数相关联。所述用列来关联的函数存储在存储器203中。
[0050] 对比模块213用于将数据查询语句中的函数与存储在存储器203中的与所述一个或多个列相关联的预定义函数作对比。
[0051] 访问模块215用于从存储器203中访问与所述一个或多个列相关联的预定义函数,用于查询数据库107。
[0052] 查询优化服务器105还可包括其他模块217来执行查询优化服务器105的各种功能。应该了解的是如前面所提到的模块可表示为单独模块或不同模块的组合。
[0053] 图3a-3b示出了根据本发明的一些实施例的一种将列与函数关联以优化查询执行的方法的示例性框图。
[0054] 如图3a所示,用户设备1011的用户使用结构化查询语言定义了一个如下面式(5)中的数据定义语句。
[0055] CREATE TABLE test(a int,b int,c varchar)/*HINT:a(sum),a(avg),b(max)*/---------------(5)
[0056] 用户设备1011经过通信网络103将数据定义语言传输到查询优化服务器105。查询优化服务器105中的接收模块207接收所述数据定义语句。一旦接收到所述数据定义语句,查询优化服务器105就在数据库107中建立名为“test”的表。所述表“test”包括三个列,“col a”、“col b”和“col c”。所述“col a”和“col b”为整数类型,而“col c”为可变字符类型。确定模块209识别在数据定义语句中是否存在函数信息如“HINT”。函数信息为“col a”和“col b”所提供。一旦确定存在所述函数信息,关联模块211就基于所述函数信息,将具有所述函数信息的列的每个与对应的预定义函数相关联。例如,函数“sum”和“avg”与“col a”相关联,而函数“max”与“col b”相关联。举例来说,表“column”存储在存储器203中,该存储器203包括数据定义语句中提供的一个或多个列的信息。“col a”、“col b”和“col c”存储在表“column”中。类似地,一个或多个表存储在存储器203中,该存储器203包括与所述列相关联的预定义函数。举例来说,表“function a”包括与“col a”相关联的一个或多个函数,表“function b”包括与“col b”相关联的一个或多个函数。“col a”包括指针,该指针包括对应预定义函数存储的地址。类似地,“col b”包括指针,该指针包括对应预定义函数存储的地址。“col c”不包含函数信息,所以不存在与“col c”相关联的函数。因此,“col c”指向NULL。所述列与对应的预定义函数的关联如下面所示。
[0057]
[0058] 其中“col a”包括针对函数sum和avg的指针。类似地,“col b”包括针对函数max的指针。
[0059] 如图3b所示,用户提供数据查询语句用于从数据库107中检索数据。查询优化服务器105的接收模块207经过通信网络103从用户设备1011接收数据查询语句。一旦接收到所述数据查询语句,查询优化服务器105就分析该数据查询语句用于执行该数据查询语句。举例来说,从用户设备1011接收到的数据查询语句如下面的式(6)所示。
[0060] SELECT AVG(a)FROM test WHERE b>100.-------------------------(6)
[0061] 数据查询语句将从数据库107中的表“test”中检索“col a”的平均值,其中“col b”的值大于100。函数(avg)与“col a”相关联。对比模块213将与“col a”相关联的函数(avg)跟存储在存储器203中的针对“col a”的预定义函数作对比。查询优化服务器105识别到与“col a”相关联的函数(avg)跟存储在存储器203中的预定义函数相匹配,如下所示。
[0062]
[0063] 访问模块215从存储器203中访问该函数(avg)用于执行数据查询语句。
[0064] 图4a示出了根据本发明的一些实施例的一种将列与函数关联的方法的流程图。
[0065] 如图4a和4b所示,所述方法包括将列与函数关联以优化查询执行的一个或多个步骤。所述方法可在计算机可执行指令的广义语境中描述。一般而言,计算机可执行指令可包括执行特定函数或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、过程、模块和函数。
[0066] 所述方法描述的顺序不应被理解为一种限制,任意数量的所描述的方法步骤可以任何顺序组合来实现该方法。此外,单独的步骤可从方法400删除而不脱离本文所描述的主题的精神和范围。此外,所述方法可在任何适当的硬件、软件、固件或其组合中实现。
[0067] 步骤401,接收模块207接收数据定义语句。在一个实施例中,查询优化服务器105的接收模块207从用户设备101接收数据定义语句。所述数据定义语句包括关于一个或多个列的信息,用于在数据库101中建立表。
[0068] 步骤403,确定模块209确定函数信息是否出现在所述数据定义语句中。举例来说,在所述数据定义语句中可为每列提供所述函数信息。如果所述数据定义语句包括函数信息,那么所述方法就经由“是”进行到步骤405。如果所述函数信息没有出现在数据定义语句中,那么所述方法就经由“否”进行到步骤411。
[0069] 步骤405,在数据库107中建立一个表,其包括具有所述函数信息的一个或多个列的信息。查询优化服务器105在存储器203中建立一个表。存储器203包括具有所述函数信息的一个或多个列的信息。例如,如果“col a”和“col b”具有所述函数信息,那么“col a”和“col b”就被存储在所述表中。
[0070] 步骤407,在数据库107中建立一个表,其包括一个或多个列的一个或多个预定义函数。所述预定义函数由用户配置在存储器203中。查询优化服务器105在存储器203中建立一个表,包括一个或多个列的一个或多个预定义函数。所述预定义函数基于所述函数信息配置。
[0071] 步骤409,关联模块211将所述函数与列相关联。关联模块211基于所述函数信息,将具有所述函数信息的列与所述预定义函数相关联。
[0072] 步骤411,在数据库107中建立数据定义语句中定义的表。查询优化服务器105基于数据定义语句中定义的列信息,在数据库107中建立一个表。
[0073] 图4b示出了根据本发明的一些实施例的一种在运行时直接访问函数的方法的流程图。
[0074] 步骤413,接收模块207接收数据查询语句。用户提供数据查询语句用于从数据库107中检索数据。在一个实施例中,数据查询语句可包括与所述列相关联的一个或多个函数的信息。
[0075] 步骤415,对比模块213将所述一个或多个函数跟预定义函数作对比。数据查询语句中与每列相关联的所述一个或多个函数跟所述预定义函数相对比。如果所述与每列相关联的一个或多个函数跟对应的预定义函数相匹配,那么所述方法就经由“是”进行到步骤417。如果所述与每列相关联的一个或多个函数跟对应的预定义函数不匹配,那么所述方法就经由“否”进行到步骤419。
[0076] 步骤417,访问模块215从存储器203访问所述预定义函数。查询优化服务器105确定数据查询语句中的函数跟存储在存储器203中的一个或多个预定义函数的匹配。访问模块215从存储器203中访问所述预定义函数用于在运行时执行所述数据查询语句。
[0077] 步骤419,查询优化服务器105调用函数管理器,其反过来又调用相应的数学函数用于执行所述数据查询语句。
[0078] 一种计算机系统
[0079] 图5示出了一种用于实现符合本发明的实施例的示例性计算机系统500的框图。在一个实施例中,计算机系统500用于实现查询优化服务器105。计算机系统500将列与函数关联以优化查询执行。计算机系统500可包括中央处理器(“CPU”或“处理器”)502。处理器502可包括至少一个数据处理器,用于执行程序组件来执行用户或系统生成的业务流程。用户可包括人,使用本发明中的设备的人;或设备本身。处理器502可包括如集成系统(总线)控制器、内存管理控制单元、浮点运算单元、图形处理器和数字信号处理单元等专门处理单元。
[0080] 处理器502可设置成经由I/O接口501来与一个或多个输入/输出(Input/Output,I/O)设备(511和512)通信。I/O接口501可采用如但不限于音频、模拟、数字、单声道、RCA、立体声、IEEE-1394、串行总线、通用串行总线(universal serial bus,USB)、红外线、PS/2、BNC、共轴、组件、混合、数字视频接口(digital visual interface,DVI)、高清多媒体接口(high-definition multimedia interface,HDMI)、射频天线、超级视频、VGA、IEEE 802.n/b/g/n/x、蓝牙、蜂窝(例如,码分多址(code division multiple access,CDMA)、高速分组接入(high-speed packet access plus,HSPA+)、全球移动通信系统(global system for mobile communications,GSM)、长期演进(long term evolution,LTE)、WiMax等)等通信协议/方法。
[0081] 使用I/O接口501,计算机系统700可与一个或多个I/O设备(511和512)通信。例如,所述输入设备511可以是天线、键盘、鼠标、操纵杆、(红外)遥控器、照相机、读卡器、传真机、数据卡、生物识别读卡器、麦克风、触摸屏、触摸板、轨迹球、手写笔、扫描仪、存储设备、收发器和视频设备/源等等。所述输出设备512可以是打印机、传真机、视频显示器(例如,阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid Crystal Display,LCD)、发光二极管(Light-Emitting Diode,LED)、等离子、等离子显示板(Plasma Display Panel,PDP)、有机发光二极管(Organic Light-Emitting Diode,OLED)等)以及扬声器等等。
[0082] 在一些实施例中,处理器502可设置成经由网络接口503与通信网络509相通信。网络接口503可与通信网络509通信。网络接口503可采用包括但不限于直接连接、以太网(例如,双绞线10/100/1000Base T),传输控制协议/互联网协议(Transmission Control Protocol/Internet Protocol,TCP/IP),令牌环、IEEE 802.11a/b/g/n/x等连接协议。通信网络509可包括但不限于直接互联、局域网(Local Area Network,LAN)、广域网(Wide Area Network,WAN)、无线网络(例如,使用无线应用协议)、互联网等等。使用网络接口503和通信网络509,计算机系统500可与数据集成器或传感器510通信。
[0083] 在一些实施例中,处理器502可设置成经由存储接口504来与存储器505(例如RAM、ROM等,图5中未示出)通信。存储接口504可连接到存储器505,其包括但不限于存储器驱动、可移动硬盘驱动等;采用如串行高级技术附件(Serial  Advanced Technology Attachment,SATA)、集成驱动电路(Integrated Drive Electronics,IDE)、IEEE-1394、通用串行总线(Universal Serial Bus,USB)、光纤信道、小型计算机系统接口(Small Computer Systems Interface,SCSI)等连接协议。所述存储器驱动还包括磁鼓、磁盘驱动器、磁光驱动、光驱、独立磁盘冗余阵列(Redundant Array of Independent Discs,RAID)、固态存储设备、固态驱动等等。
[0084] 存储器505可存储一批程序或数据库组件,包括但不限于用户接口应用506、操作系统507、网络服务器508等等。在一些实施例中,计算机系统500可存储用户/应用数据506,如在本发明中所描述的数据、变量、记录等等。这些数据库可实现为容错数据库、关系数据库、可扩展数据库和安全数据库,例如Oracle或Sybase。
[0085] 操作系统507可促进计算机系统500的资源管理和操作。操作系统的示例包括,但不限于苹果Macintosh OS X、Unix式系统发行版(例如,伯克利软件套件(Berkeley Software Distribution,BSD)、FreeBSD、NetBSD、OpenBSD等)、Linux系统发行版(例如,Red Hat、Ubuntu、Kubuntu等)、IBM OS/2、Microsoft Windows(XP,Vista/7/8等)、苹果iOS、谷歌安卓、黑莓OS等。用户接口517可便于程序组件通过文本或图形设施显示、执行、交互、操控或运算。例如,用户界面可在操作性连接到计算机系统500的显示系统上提供计算机交互界面元素,如光标、图标、复选框、菜单、滚动条、窗口、桌面小程序等。可采用图形用户界面(Graphical User Interface,GUI),其包括但不限于苹果Macintosh操作系统的Aqua、IBM OS/2、Microsoft Windows(例如,Aero和Metro等)、Unix X-Windows、网络界面库(例如,ActiveX、Java、Javascript、AJAX、HTML和Adobe Flash等)等。
[0086] 在一些实施例中,计算机系统500可实现网页浏览器508所存储的程序组件。所述网页浏览器可以是超文本浏览应用,如微软IE浏览器、谷歌浏览器、火狐浏览器和苹果浏览器等。安全网页浏览可使用安全超文本传输协议(Secure Hypertext Transport Protocol,HTTPS)、安全套接层协议(Secure Sockets Layer,SSL)、传输层安全协议(Transport Layer Security,TLS)等。网页浏览器可使用如AJAX、DHTML、Adobe Flash、JavaScript、Java、应用程序接口(Application Programming Interface,API)等。在一些实施例中,计算机系统500可实现电子邮件服务器519所存储的程序组件。所述电子邮件服务器可以是互联网电子邮件服务器,如Microsoft Exchange等。所述电子邮件服务器可使用如ASP、ActiveX、ANSI C++/C#、Microsoft.NET、CGI scripts、Java、JavaScript、PERL、PHP、Python和WebObjects等工具。所述电子邮件服务器可使用如因特网消息接入协议(Internet Message  Access Protocol,IMAP)、消息应用程序接口(Messaging 
Application Programming Interface,MAPI)、Microsoft Exchange、邮局协议(Post Office Protocol,POP)、简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)等。
在一些实施例中,计算机系统700可实现电子邮件客户端所存储的程序组件。所述电子邮件客户端可以是邮件查看应用,如Apple Mail、Microsoft Entourage、Microsoft Outlook和Mozilla Thunderbird等。
[0087] 此外,一个或多个计算机可读存储介质可用于实现符合本发明的实施例。计算机可读存储介质指的任何类型的物理存储器,在其上可存储处理器可读的信息或数据。因此,计算机可读存储介质可存储一个或多个处理器执行的指令,包括用于引起处理器来执行符合本发明的步骤或阶段的指令。术语“计算机可读介质”应当理解为包括有形物品而不包括载波和瞬时信号等,即非瞬时性的。示例包括随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、易失性存储器、非易失性存储器、硬盘驱动、CD ROM、DVD、闪存驱动器、磁盘和任何其他已知的物理存储介质。
[0088] 此外,本发明的优点在此被说明。
[0089] 本发明的实施例帮助用户为数据定义语句中的每列定义一个或多个函数信息。
[0090] 本发明的实施例减少了在执行查询运行时函数管理器调用相应的函数的开销。
[0091] 本发明的实施例为表的各列提供预定义函数。因此,所述函数可在运行时使用列标识直接访问。
[0092] 本发明可避免产生大量的预编译函数。
[0093] 本发明通过节省时间优化了查询执行。
[0094] 所描述的操作可实现为一种方法、系统或制品使用标准编程和/或工程技术、来制作软件、固件、硬件或其任何组合。所描述的操作可实现为保留在“非瞬时性计算机可读介质”中的代码,处理器可从所述计算机可读介质读取并执行所述代码。所述处理器是能够处理并执行所述查询的微处理器和处理器中的至少一个。非瞬时性计算机可读介质可包括如磁存储介质(例如,硬盘驱动器、软盘和磁带等)、光存储(CD-ROM、DVD和光盘等)、易失和非易失性存储设备(例如,EEPROM、ROM、PROM、RAM、DRAM、SRAM、闪存、固件和可编程逻辑等)等介质。此外,非瞬时性计算机可读介质包括除瞬时性之外的所有计算机可读介质。实现所描述的操作的代码还可在硬件逻辑(例如,集成电路芯片、可编程门阵列(Programmable Gate Array,PGA)、专用集成电路(Application Specific Integrated Circuit,ASIC)等)中实现。
[0095] 更进一步地,实现所描述的操作的代码可在“传输信号”中实现,其中传输信号可通过空间或通过如光纤、铜线等传输介质传播。其中编码了代码或逻辑的传输信号还可包括无线信号、卫星传播、无线电波、红外信号和蓝牙等。其中编码了代码或逻辑的所述传输信号可由发射台传输并由接收台接收。被编码在所述传输信号中的所述代码或逻辑可被解码并存储在位于接收和发射台或设备处的硬件或非瞬时性计算机可读介质中。“制品”包括非瞬时性计算机可读介质、硬件逻辑和/或代码可在其中实现的传输信号。其中编码了实现操作的所描述的实施例的代码的设备可包括计算机可读介质或硬件逻辑。当然,本领域技术人员将理解到在不脱离本发明的范围的情况下可对该配置做出许多修改,并且所述制品可包括承载本领域已知的介质的合适信息。
[0096] 除非另有明确规定,否则术语“一实施例”、“实施例”、“多项实施例”、“该实施例”、“这些实施例”、“一项或多项实施例”、“一些实施例”和“一项实施例”指“本发明的一项或多项(但不是全部)实施例”。
[0097] 除非另有明确规定,否则术语“包含”、“包括”和“具有”和其他形式指“包括但不限于”。
[0098] 除非另有明确规定,否则枚举的项目列表并不意味着这些项目中的任何项目或所有项目是互斥的。
[0099] 除非另有明确规定,否则术语:“一”、“一个”和“所述”指“一个或多个”。
[0100] 描述具有相互通信的若干部件的实施例并不意味着需要所有这些部件。相反,描述多种可选部件来说明本发明的许多种可能的实施例。
[0101] 虽然本文描述了单个设备或制品,但显然可以使用不止一个设备/制品(不论它们是否协作)来代替单个设备/制品。类似地,虽然本文描述了不止一个设备或制品(不论它们是否协作),但显然可以使用单个设备/制品来代替不止一个设备或制品,或者可以使用不同数量的设备/制品,而不是所示数量的设备或程序。设备的功能和/或特征可替代性地由没有明确地描述为具有这种功能/特征的一个或多个其它设备来实施。因此,本发明的其他实施例无须包括设备本身。
[0102] 图4a和4b的说明性操作示出了以特定顺序发生的特定事件。在可选实施例中,特定的操作可以不同的顺序执行、修改或撤除。此外,可在上述逻辑中添加步骤而仍然使其符合上述实施例。此外,本文所述的操作可以依次发生,或者某些操作可并行处理。另外,可由单个处理单元或者由分布式处理单元来执行操作。
[0103] 最后,出于可读性和指导性的目的已经主要选择了说明书中使用的语言,并且该语言未被选择成限定或限制本发明的主题。因此,本发明的范围并非意在由这一详细描述限制,而是由在基于本文的应用上所附的任何权利要求限制。因此,本发明实施例旨在举例说明,而非限制在所附权利要求中阐述的本发明范围。
[0104] 尽管本文公开了多个方面和实施例,但是其它方面和实施例对于所属领域技术人员来说应该是显而易见的。本文所公开的多个方面和实施例是出于说明性目的,而非限制性的,真实范围和精神由所附权利要求表征。