ala*_*arr 6 google-cloud-spanner
我在 Google Cloud Spanner 中有一个 860M 行的表格,我试图了解解释的工作原理。
该表有一个字符串列geoid,该列有一个索引。
当我运行以下查询时,它只需要 36 毫秒:
SELECT count(*)
FROM usbg_2015
WHERE geoid= '340170175001'
Run Code Online (Sandbox Code Playgroud)
表结构为:
CREATE TABLE usbg_2015 (
geoid STRING(12),
quadkey STRING(24),
) PRIMARY KEY (geoid, quadkey)
Run Code Online (Sandbox Code Playgroud)
但是,我不明白为什么解释说它使用Table Scan而不是Index Scan。我将表扫描理解为对表的完整扫描,在这种情况下读取 860M 行,它应该花费超过 36 毫秒的时间。我缺少什么?
小智 6
在解释中,Table Scan只是指从表中读取数据,并不一定是全表扫描。索引扫描也是如此。这意味着它正在从索引中读取。在这两种情况下,如果存在可搜索谓词(例如,主键或索引列上的常量前缀),它们将进行搜索。
该计划使用了基表,并搜索并扫描了 11 行,否则您将看到 Table Scan 返回的结果为 860M 行。
大地水准面是表 usbg_2015 的前导主键列吗?根据计划,这是我能想到的唯一解释。
| 归档时间: |
|
| 查看次数: |
251 次 |
| 最近记录: |