简介: 多元索引是表格存储产品中一个重要的功能,多元索引使用倒排索引技术为表格存储提供了非主键列上的快速检索功能,另外也提供了统计聚合功能。表格存储近期开放了SQL查询功能,SQL引擎默认从原始表格中读取数据,非主键列上的查询需要扫描全表。

作者 | 政豪
来源 | 阿里技术公众号

多元索引是表格存储产品中一个重要的功能,多元索引使用倒排索引技术为表格存储提供了非主键列上的快速检索功能,另外也提供了统计聚合功能。表格存储近期开放了SQL查询功能,SQL引擎默认从原始表格中读取数据,非主键列上的查询需要扫描全表。开启了多元索引之后,如果一个查询的过滤条件或者统计聚合可以下推至多元索引执行,那么SQL引擎将部分查询计划转换为多元索引请求,将从多元索引中获取数据,提高查询效率。

一 多元索引SQL算子支持

1 前提条件

在使用SQL查询多元索引之前,首先需要在表格上创建多元索引。如果多元索引包含SQL语句中涉及的数据列,则SQL引擎会通过多元索引读取数据并下推多元索引支持的算子。例如有一张表exampletable有a, b, c, d四列,多元索引中包含了b, c, d三列,只有当SQL语句中只涉及b, c, d中的数据列时,才会从多元索引读取数据。

SELECT a, b, c, d FROM exampletable; /* 多元索引不包含a,b,c,d,扫描全表读取数据,不支持算子下推 */
SELECT b, c, d FROM exampletable;    /* 多元索引包含b,c,d,通过多元索引读取数据,支持算子下推 */

2 支持下推的算子

二 多元索引SQL查询实战

为了直观地展示SQL查询多元索引功能,下文将以某自行车租赁商的订单表为例,使用多元索引上的SQL功能完成一些简单的查询分析任务。某自行车租赁商的订单表如下:

整张表格名为trips,每一笔租车订单都有唯一的订单号作为主键,订单中记录了租车时长、开始日期、结束日期、开始站点、结束站点等信息。表格中包含120万行数据,在没有开启多元索引的情况下对表格行数进行统计,查询会因为超出扫描配额限制而终止。

同样地,如果以非主键列作为查询条件进行查询,也会因为涉及全表扫描超过扫描配额而被终止。

为了能够根据非主键列的值进行查询以及统计聚合,需要创建覆盖全部数据列的多元索引。对于数据量比较大的表格,需要较长的时间等待多元索引同步完成。

1 过滤条件下推

在开启多元索引之后,即可在非主键列上进行条件查询。例如,下图查询起点编号31208到起点编号31209的租车订单,借助多元索引,SQL引擎能够在500毫秒之内查询到全表中满足条件的140行记录。

多元索引支持多个条件的组合,例如查询2010年10月1日当天,站点31208的订单。由于外国10月1日不放假,那天的订单数量并不是很多。

2 统计聚合下推

除了非主键列查询,多元索引还提供了强大的统计聚合能力。在未创建多元索引的时候无法统计行数,但是有了多元索引,能在500毫秒左右查询到行数、站点数、平均租车时长等信息。

同样地,分组统计聚合也可以快速获取结果,例如列出每个站点总订单数目。

过滤条件和统计聚合可以一起使用,例如查询2010年10月1日当天每个站点订单数目。

3 TopN下推

SQL中包含ORDER BY和LIMIT的语句成为TopN查询,多元索引支持快速查询TopN,图中的查询展示了最近的10条数据。

原文链接
本文为阿里云原创内容,未经允许不得转载。

表格存储 SQL 查询多元索引相关推荐

  1. sql 查询数据库索引重建_不良的数据库索引– SQL查询性能的杀手–建议

    sql 查询数据库索引重建 previous article, we explained what clustered and nonclustered indexes were, and showe ...

  2. sql 查询数据库索引重建_SQL查询性能的杀手– –了解不良的数据库索引

    sql 查询数据库索引重建 Poor indexing is one of the top performance killers, and we will focus on them in this ...

  3. TableStore-什么是表格存储?

    由于业务的开发,需要一种nosql数据库来永久存储目前的业务数据,结合实际和具体业务特点,我们最终选择了表格存储. 参考:https://help.aliyun.com/document_detail ...

  4. 冷热分离之OTS表格存储实战

    简介: 为什么要冷热分离由于2020疫情的原因,在线教育行业提前被大家所重视,钉钉教育已经服务超过21万所学校.700万教师和1.4亿学生用户,每天大量的教育数据产生.整体数据量:随着时间的积累,数据 ...

  5. sql查询初学者指南_面向初学者SQL Server查询执行计划–聚集索引运算符

    sql查询初学者指南 We have discussed how to created estimated execution plans and actual execution plans in ...

  6. SQL Server2008存储结构之聚集索引

    聚集索引即基于数据行的键值在表内排序和存储这些数据行.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储. 从某种程度上,聚集索引即数据,这句话是有道理的:但正如同其他索引一样,聚集索引也是按 ...

  7. sql查询索引语句_sql优化总结--基于sql语句优化和索引优化

    概述 最近做查询,统计和汇总.由于数据量比较庞大,大部分表数据上百万,甚至有的表数据上千万.所以在系统中做sql优化比较多,特此写一篇文章总结一下关于sql优化方面的经验. 导致查询缓慢的原因 1.数 ...

  8. MYSQL避免全表扫描__如何查看sql查询是否用到索引(mysql)

    MYSQL避免全表扫描 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断,否 ...

  9. T-SQL查询进阶--理解SQL Server中索引的概念,原理以及其他(看了两次了,转了)

    简介 在SQL Server中,索引是一种增强式的存在,这意味着,即使没有索引,SQL Server仍然可以实现应有的功能.但索引可以在大多数情况下大大提升查询性能,在OLAP中尤其明显.要完全理解索 ...

最新文章

  1. SOCKET编程-时间服务器和客户端的实现
  2. JetPack——网络库封装
  3. 数组、字符串及字符串相关函数
  4. 音视频技术开发周刊(第128期)
  5. 动态路由和动态路由中的RIP协议
  6. 组装台式计算机需要哪些配件,组装电脑需要哪些配件 电脑装机教程图解
  7. 【框架结构】目标检测算法抽象流程
  8. grep命令--文件过滤分割与合并
  9. 【数学建模】元胞自动机
  10. 进销存excel_excel进销存仓库表格同步手机操作
  11. office2010每次打开总是出现配置进度
  12. 纯真数据库 解析 php,PHP解析纯真IP数据库(qqwry.dat)
  13. 优优聚:美团,又要抢抖音的短视频生意
  14. 熊乃学 计算机,吴谋博士研究成果在权威期刊在线发表
  15. gimp 架构_GIMP 2.10正式发布,史无前例的改动
  16. FPGA开发中常见报错或警告汇总
  17. php压力比例混合器图片,教你认识各种泡沫比例混合器
  18. 家用小电器加湿器上亚马逊和出口需要的认证介绍
  19. 9 个美观大气的后台管理系统(收藏备用)
  20. 定价的艺术:苹果和网飞对最优订阅价格的理解

热门文章

  1. php factory interface,PHP设计模式之工厂方法*解读
  2. 程序员的数学 pdf_作为一个程序员,分享我日常学习方式,自学渠道和方式
  3. js br不生效_前端标注工具-AILabel.js
  4. 如何在vb.net中取得两时间的毫秒差_科技品牌软文营销如何写出一篇爆文?
  5. linux更改nginx最大访问数,Linux下nginx服务的配置文件nginx.conf中模块的讲解之配置limit_conn_zone来限制并发连接数以及下载速率...
  6. linux 多线程客户端服务端通信,[转载]多线程实现服务器和客户端、客户端和客户端通信;需要代码,留言...
  7. c语言线程不安全错误定位,C语言中的线程安全可破坏事件触发类#
  8. R 语言怎么保存工作目录到当前路径_【R语言基础】01.R语言软件环境搭建及常用操作...
  9. php 多线程上传,PHP CURL 多线程操作代码实例
  10. qq浏览器极速版_安卓手机QQ轻聊版大升级,极速版正式上线:无广告/省内存