查询列式数据

本页介绍了如何针对列式数据运行查询。

查询列式数据

@{scan_method=columnar} 查询提示可让查询读取列式数据。您可以在语句级别或表级别设置 scan_method 提示。

例如,您可以使用以下查询从 SingersMessages 表中读取列式数据:

  • @{scan_method=columnar} SELECT COUNT(*) FROM Singers;
  • SELECT COUNT(*) FROM Singers @{scan_method=columnar};
  • @{scan_method=columnar} SELECT m.MsgBlob FROM Messages WHERE m.id='1234';

使用 BigQuery 联合查询查询 Spanner 列式数据

如需从 BigQuery 读取 Spanner 列式数据,您可以创建外部数据集或使用 EXTERNAL_QUERY 函数。

查询外部数据集时,如果列式数据可用且适合您的查询,系统会自动使用列式数据。

如果您使用 EXTERNAL_QUERY 函数,请在嵌套的 Spanner 查询中添加 @{scan_method=columnar} 提示。

在以下示例中:

  • EXTERNAL_QUERY 的第一个实参指定外部连接和数据集,即 my-project.us.albums
  • 第二个实参是一个 SQL 查询,用于从 AlbumInfo 表中选择 MarketingBudget 小于 50 万的 MarketingBudget
  • @{scan_method=columnar} 提示可优化外部查询以进行列式扫描。
  • 外部 SELECT 语句用于计算外部查询返回的 MarketingBudget 值的总和。
  • AS total_marketing_spend 子句为计算出的总和分配别名。
SELECT SUM(MarketingBudget) AS total_marketing_spend
FROM
  EXTERNAL_QUERY(
    'my-project.us.albums',
    '@{scan_method=columnar} SELECT AlbumInfo.MarketingBudget FROM AlbumInfo WHERE AlbumInfo.MarketingBudget < 500000;');

后续步骤