[发明专利]用于非索引覆盖的数据查询方法和装置有效
申请号: | 201410086556.7 | 申请日: | 2014-03-10 |
公开(公告)号: | CN103810300B | 公开(公告)日: | 2017-08-01 |
发明(设计)人: | 洪超 | 申请(专利权)人: | 北京国双科技有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 北京康信知识产权代理有限责任公司11240 | 代理人: | 李志刚,吴贵明 |
地址: | 100086 北京市海淀区*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 用于 索引 覆盖 数据 查询 方法 装置 | ||
技术领域
本发明涉及数据库领域,具体而言,涉及一种用于非索引覆盖的数据查询方法和装置。
背景技术
在数据库表有聚集索引的情况下,当用数据库表的非聚集索引列作为过滤条件,根据该列来从数据库表中获取数据列时,获取的数据列在非聚集索引里通常都不是索引覆盖(即非聚集索引缺少某些选择的数据列),此时数据库系统如SQLServer执行非聚集索引查找,并对于不包含的数据列执行书签查找,或者执行聚集索引扫描。在数据量大时,无论是执行非聚集索引查找还是执行聚集索引扫描,都造成数据查询性能降低。
例如,FactSession表在SessionTimeKey(时间列)上建立有聚集索引,在SessionKey上面建立有非聚集索引,非索引覆盖的非聚集索引查询代码如下:
SELECT SessionKey,BrowserKey FROM dbo.FactSession WHERE SessionKey>7342
在上述举例中可以看出,非聚集索引查询是通过非聚集索引里的SessionKey进行过滤查询,但在选择列里面除了SessionKey还包含了BrowserKey,这个BrowserKey便导致了这条查询不是非聚集索引的索引覆盖的情况,因此,变成整数据表的聚集索引扫描。
针对现有技术中在数据量大时造成对数据库表的数据查询性能降低的问题,目前尚未提出有效的解决方案。
发明内容
本发明的主要目的在于提供一种用于非索引覆盖的数据查询方法和装置,以解决在数据量大时造成对数据库表的数据查询性能降低的问题。
为了实现上述目的,根据本发明的一个方面,提供了一种用于非索引覆盖的数据查询方法。根据本发明的用于非索引覆盖的数据查询方法包括:获取数据库表的非聚集索引的过滤条件;在确定通过非聚集索引对非索引覆盖的数据库表进行查询时,获取数据库表的聚集索引的聚簇键的值;以及将过滤条件和聚簇键的值作为查询条件在聚集索引里对数据库表进行查询。
进一步地,获取聚集索引的聚簇键的值包括:从非聚集索引中查找满足过滤条件的记录行;以及获取记录行对应的聚簇键的值。
进一步地,在获取记录行对应的聚簇键的值之后,数据查询方法还包括:对获取的记录行对应的聚簇键的值去重;以及将去重后的聚簇键的值插入到临时表,将临时表和过滤条件作为查询条件。
进一步地,在确定通过非聚集索引对非索引覆盖的数据表进行查询之前,数据查询方法还包括:提取数据库表的所有非聚集索引;基于提取到的非聚集索引判断非聚集索引是否包含所有数据列;以及如果判断出非聚集索引不包含所有数据列,则确定非聚集索引里非索引覆盖。
进一步地,在提取数据库中的所有非聚集索引之后,数据查询方法还包括:将提取到的非聚集索引存储到缓存;以及当再次确定通过非聚集索引对非索引覆盖的数据库进行查询时,获取缓存中的非聚集索引。
为了实现上述目的,根据本发明的另一方面,提供了一种用于非索引覆盖的数据查询装置。根据本发明的用于非索引覆盖的数据查询装置包括:第一获取单元,用于获取数据库表的非聚集索引的过滤条件;第二获取单元,用于在确定通过非聚集索引对非索引覆盖的数据库表进行查询时,获取数据库表的聚集索引的聚簇键的值;以及查询单元,用于将过滤条件和聚簇键的值作为查询条件在聚集索引里对数据库表进行查询。
进一步地,第二获取单元包括:查找模块,用于从非聚集索引中查找满足过滤条件的记录行;以及获取模块,用于获取记录行对应的聚簇键的值。
进一步地,数据查询装置还包括:去重单元,用于在获取记录行对应的聚簇键的值之后,对获取的记录行对应的聚簇键的值去重;以及插入单元,用于将去重后的聚簇键的值插入到临时表,将临时表和过滤条件作为查询条件。
进一步地,数据查询装置还包括:提取单元,用于提取数据库表的所有非聚集索引;判断单元,用于基于提取到的非聚集索引判断非聚集索引是否包含所有数据列;以及确定单元,用于当判断出非聚集索引不包含所有数据列,确定非聚集索引里非索引覆盖。
进一步地,数据查询装置还包括:存储单元,用于在提取数据库中的所有非聚集索引之后,将提取到的非聚集索引存储到缓存;以及第三获取单元,用于当再次确定通过非聚集索引对非索引覆盖的数据库进行查询时,获取缓存中的非聚集索引。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京国双科技有限公司,未经北京国双科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410086556.7/2.html,转载请声明来源钻瓜专利网。
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置