《一种基于视图的查询方法.pdf》由会员分享,可在线阅读,更多相关《一种基于视图的查询方法.pdf(5页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104281592 A (43)申请公布日 2015.01.14 CN 104281592 A (21)申请号 201310278830.6 (22)申请日 2013.07.04 G06F 17/30(2006.01) (71)申请人 中国银联股份有限公司 地址 200135 上海市浦东新区含笑路 36 号 银联大厦 (72)发明人 唐真 周继恩 汤茂安 李伟 (74)专利代理机构 中国专利代理(香港)有限公 司 72001 代理人 郑冀之 朱海煜 (54) 发明名称 一种基于视图的查询方法 (57) 摘要 本发明公开一种基于视图的查询方法, 包括 以下步骤 : 基于。
2、多个数据库表生成视图, 并且使 得该视图包括包含标识符的列, 所述标识符用于 标识相应的数据库表, 将标识符作为查询条件的 部分, 查询关于视图的特定的数据库表。 (51)Int.Cl. 权利要求书 1 页 说明书 2 页 附图 1 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书1页 说明书2页 附图1页 (10)申请公布号 CN 104281592 A CN 104281592 A 1/1 页 2 1. 一种基于视图的查询方法, 其特征在于, 包括以下步骤 : 基于多个数据库表生成视图, 并且使得该视图包括包含标识符的列, 所述标识符用于 标识相应的数据库表, 将。
3、标识符作为查询条件的部分, 查询关于视图的特定的数据库表。 2. 如权利要求 1 所述的方法, 其特征在于, 还包括以下步骤 : 基于所述视图创建实体 Bean, 将数据库表的标识符和数据库表的主键一起作为所述实体 Bean 的主键, 利用所述实体 Bean 的主键对标识符所指示的数据库表执行查询。 权 利 要 求 书 CN 104281592 A 2 1/2 页 3 一种基于视图的查询方法 技术领域 0001 本发明涉及数据库查询优化, 并且尤其涉及一种基于视图的查询方法。 背景技术 0002 随着数据库数据的持续增加, 通常通过拆分数据库表来摆脱单表访问的性能瓶 颈。然而, 随着数据库表数。
4、量的增加, 创建的视图所涉及的数据库表也越来越多。因此, 对 于涉及多个数据库表的视图的查询性能较低。 0003 需要一种优化的查询方法。 发明内容 0004 根据本发明的一个目的, 公开一种基于视图的查询方法, 包括以下步骤 : 基于多个 数据库表生成视图, 并且使得该视图包括包含标识符的列, 所述标识符用于标识相应的数 据库表, 将标识符作为查询条件的部分, 查询关于视图的特定的数据库表。 0005 优选地, 上述方法还包括以下步骤 : 基于所述视图创建实体 Bean, 将数据库表的标识符和数据库表的主键一起作为所述实体 Bean 的主键, 利用所述实 体 Bean 的主键对标识符所指示的。
5、数据库表执行查询。 0006 本发明提高了基于视图的查询效率, 尤其是基于视图的 JPA 主键查询效率, 使基 于视图的查询等效于基于单表的查询, 使查询效率不再因为视图中增加表而受影响。 附图说明 0007 在参照附图阅读了本发明的具体实施方式以后, 本领域技术人员将会更清楚地了 解本发明的各个方面。本领域技术人员应当理解的是, 这些附图仅仅用于配合具体实施方 式说明本发明的技术方案, 而并非意在对本发明的保护范围构成限制。 0008 图 1 是根据本发明实施例的基于视图的查询方法的步骤示意图。 0009 图 2 是根据本发明实施例的基于视图的查询方法的示例。 具体实施方式 0010 为了解。
6、决当涉及的数据库表的数量增加, 基于视图的查询性能低下的问题, 根据 本发明提出在视图中新增数据库表的标识列, 从而在查询条件中增加数据库的标识, 指定 要查询的特定的数据库表。图 1 是根据本发明实施例的基于视图的查询方法的步骤示意 图。如图 1 所示, 根据本发明的方法包括以下步骤 : 基于多个数据库表生成视图, 并且使得 该视图包括包含标识符的列, 所述标识符用于标识相应的数据库表。 以及, 将标识符作为查 询条件的部分, 查询关于视图的特定的数据库表。 0011 进一步, 对于 J2EE 的环境, 可以通过上述步骤并且在 Entity Bean(实体 Bean) 中 创建 “伪主键” 。
7、来提高 JPA 对视图的查询效率。 0012 现有技术中, 通过对视图创建 Entity Bean, 并将 Entity Bean 的主键指定为数据 说 明 书 CN 104281592 A 3 2/2 页 4 库表的主键, 从而通过调用 JPA 主键查询接口执行查询。这种方法每次执行查询均需要访 问视图中的每张表, 当表套数增多, 数据量增大时, 该方法对视图中的表的无效查询 (查询 记录数是 0) 会严重降低查询性能。另一种方法是为每张表创建不同的 Entity Bean, 然后 通过调用 JPA 主键查询接口实现单表主键查询。当表套数增多时创建的 Entity Bean 会越 来越多, 。
8、导致 Entity Bean 难以维护。 0013 本发明进一步通过以下步骤来克服上述技术缺陷 : 基于所述视图创建实体 Bean, 将数据库表的标识符和数据库表的主键一起作为所述实体 Bean 的主键, 利用所述实体 Bean 的主键对标识符所指示的数据库表执行查询。 0014 示例 步骤 1 : 在视图创建时, 新增一列用于标识数据库表。例如 : 对表 tbl_his_log1 和 tbl_his_log2 创建视图 viw_his_log, create view viw_his_log (identifier, .) as (select 1, t1.* from tbl_his_lo。
9、g1 t1) union all (select 2, t2.* from tbl_ his_log2 t2) 通过上述步骤创建的视图包括了标识符 (identifier) 列, 用于标识特定数据库表。 0015 步骤2 : 基于视图创建Entity Bean, 将Entity Bean的主键设置为是 “identifier + 表的真实主键 pri_key” 。在查询的时候通过指定表的标识 identifier 和表的真实主键 pri_key, 可以实现对特定的表执行主键查询, 从而达到查询性能的提高。 0016 图 2 是根据本发明实施例的基于视图的查询方法的示例。如图所示, 在查询 SQ。
10、L 语句中, 指定查询条件为 identifier=1, pri_key=2。数据库接收到查询 SQL 语句后, SQL 解释器根据 identifier=1 做优化处理后, 无需对视图的所有表执行查询, 只需针对满足条 件的表 1 执行查询。最后在表 1 上执行条件为 pri_key=2 的查询, 并将结果返回。 0017 通过以上实施方式的描述, 本领域中的普通技术人员能够理解, 在不偏离本发明 的精神和范围的情况下, 还可以对本发明的具体实施方式作各种变更和替换。这些变更和 替换都落在本发明权利要求书所限定的范围内。 说 明 书 CN 104281592 A 4 1/1 页 5 图 1 图 2 说 明 书 附 图 CN 104281592 A 5 。