本页介绍了如何针对列式数据运行查询。
查询列式数据
@{scan_method=columnar}
查询提示可让查询读取列式数据。您可以在语句级别或表级别设置 scan_method
提示。
例如,您可以使用以下查询从 Singers
和 Messages
表中读取列式数据:
@{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;');