赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 表格存储
  4. 操作指南
  5. 常见问题
  6. 使用SQL查询数据时如何选择查询方式

使用SQL查询数据时如何选择查询方式

  • 常见问题
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

使用SQL查询数据时,您可以通过表的映射关系或者多元索引的映射关系进行数据查询,请根据实际场景选择合适的查询方式。

背景信息

表格存储作为结构化大数据存储,支持不同的索引结构,便于在不同场景的查询分析加速使用。索引结构包括通过数据表主键进行的单行读(GetRow)和范围读(GetRange)、自定义配置主键的二级索引表以及支持倒排索引和多维空间索引的多元索引。

使用SQL查询功能时,您可以通过显式访问二级索引表查询数据。对于多元索引,表格存储提供了自动多元索引选择策略和显式访问多元索引两种方式查询数据。更多信息,请参见索引选择策略。

样例场景

假设数据表exampletable包括主键列id(整型)以及属性列name(String类型)和context(String类型),且已为该数据表创建了多元索引exampletable_searchindex,该多元索引包括id(Integer类型)和context(Text类型)两列。

本文以该样例场景为例介绍通过SQL使用不同索引结构进行数据查询的实践操作。

  • 使用表的映射关系

  • 使用多元索引的映射关系

使用表的映射关系

请根据实际场景选择合适的使用方式。使用表的映射关系时支持设置数据是否要满足强一致性以及是否允许牺牲统计聚合精准度来提升查询性能。

说明

关于创建表的映射关系的更多信息,请参见创建表的映射关系。

方式一:查询数据时要求数据满足最终一致,且允许牺牲统计聚合精准度

  1. 为数据表exampletable创建映射关系,映射表名称为exampletable,其他参数保持默认即可。

    CREATE TABLE `exampletable` (`id` BIGINT, `name` MEDIUMTEXT, `context` MEDIUMTEXT, PRIMARY KEY(id)) ENGINE='Tablestore';
  2. 查询数据。

    当执行以下SQL语句查询数据时,由于id、name和context未全部包括在多元索引exampletable_searchindex中,因此表格存储会自动选择数据表进行数据查询。

    SELECT * FROM exampletable LIMIT 10;

    当执行以下SQL语句查询数据时,由于id和context均包括在多元索引exampletable_searchindex中,因此表格存储会自动选择该多元索引进行数据查询。

    SELECT id,context FROM exampletable LIMIT 10;

方式二:查询数据时要求保证数据强一致性

  1. 为数据表exampletable创建映射关系,映射表名称为exampletable以及设置data_consistency为strong。

    CREATE TABLE `exampletable` (`id` BIGINT, `name` MEDIUMTEXT, `context` MEDIUMTEXT, PRIMARY KEY(id)) ENGINE='Tablestore', ENGINE_ATTRIBUTE='{"data_consistency": "strong"}';
  2. 查询数据。更多信息,请参见查询数据。

    由于多元索引是满足数据最终一致,并不保证强一致性,因此表格存储不会通过任何多元索引进行数据查询。

方式三:查询数据时要求数据满足最终一致,但不允许牺牲统计聚合精准度

  1. 为数据表exampletable创建映射关系,映射表名称为exampletable,设置data_consistency为eventual以及设置allow_inaccurate_aggregation为false。

    CREATE TABLE `exampletable` (`id` BIGINT, `name` MEDIUMTEXT, `context` MEDIUMTEXT, PRIMARY KEY(id)) ENGINE='Tablestore', ENGINE_ATTRIBUTE='{"data_consistency": "eventual", "allow_inaccurate_aggregation": false}';
  2. 查询数据。更多信息,请参见查询数据。

    由于多元索引的统计聚合操作非绝对精确的结果,因此表格存储不会选择任何多元索引进行数据查询。

使用多元索引的映射关系

当要使用指定多元索引进行数据查询时,您可以通过为该多元索引创建映射关系来实现。

说明

关于创建多元索引的映射关系的更多信息,请参见创建多元索引的映射关系。

  1. 创建多元索引的映射关系,映射表名称为exampletable_searchindex_test。

    CREATE TABLE `exampletable_searchindex_test` (`id` BIGINT, `context` MEDIUMTEXT) ENGINE='searchindex' ENGINE_ATTRIBUTE='{"index_name": "exampletable_searchindex", "table_name": "exampletable"}'
  2. 查询数据。

    SELECT id,context FROM exampletable_searchindex_test WHERE text_match(context, "tablestore cool") LIMIT 10;
相关文章

多元索引路由字段的使用 2025-04-22 14:38

创建多元索引时,您可以选择部分主键列作为路由字段,在进行索引数据写入时,表格存储会根据路由字段的值计算索引数据的分布位置,路由字段的值相同的记录会被索引到相同的数据分区中。 使用流程

如何选择二级索引和多元索引 2025-04-22 14:38

本文通过对原生Tablestore查询、二级索引(Secondary Index)和多元索引(Search Index)三种查询场景进行详细分析,为您提供索引的选择建议。 详细分析请参见Tablestore存储和索引引擎详解。

使用通配符查询时出现length of field value is longer than 32 for the [WILDCARD_QUERY] query异常 2025-04-22 14:38

当使用通配符查询时出现length of field value is longer than 32 for the [WILDCARD_QUERY] query异常时,请确保查询字符串的长度不超过32字节。 现象

使用多元索引Search接口查不到数据 2025-04-22 14:38

当使用多元索引Search接口查不到数据时,一般是由数据表中的数据未正确同步到多元索引或使用的查询方式错误导致的,请检查数据表中的数据是否已正确同步到多元索引以及使用的查询方式是否正确。 问题现象 使用多元索引Search接口查询数据时,出现查不到数据问题。

使用SQL查询存在数据延迟问题 2025-04-22 14:38

问题现象 在新增或更新数据后,使用SQL查询数据时无法立即获取最新数据,存在一定的延迟现象。 可能原因

为什么使用多元索引翻页查询时Token失效了? 2025-04-22 14:38

Token本身不是字符串,直接使用new String(nextToken)将Token编码为String会造成Token信息丢失,导致Token失效。 如果需要持久化nextToken或者传输nextToken给前端页面,您可以使用Base

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号