了解扳手说明

问题描述 投票:3回答:1

我在Google Cloud Spanner中有一个8.6亿行的表,我试图了解解释的工作原理。

该表有一个字符串列geoid,并且此列有一个索引。

当我运行以下查询时,只需要36毫秒

SELECT count(*) FROM usbg_2015 WHERE geoid= '340170175001'

表结构为:

CREATE TABLE usbg_2015 ( geoid STRING(12), quadkey STRING(24), ) PRIMARY KEY (geoid, quadkey)

但是,我不明白为什么解释说它使用Table Scan而不是Index Scan。我将Table scan理解为对表的完整扫描,在这种情况下,读取860M行,它需要的时间超过36ms。我缺少什么?

enter image description here

google-cloud-spanner
1个回答
2
投票

在说明中,表扫描仅表示它从表中读取数据,并不一定表示全表扫描。索引扫描也是如此。这意味着它正在从索引中读取。在这两种情况下,如果都有可搜索的谓词(例如,主键或索引列上的常量前缀),它们将进行搜索。

该计划使用了基表,并搜索并扫描了11行,否则您将看到从表扫描中返回了860M行。

大地水准面是表usbg_2015的前导主键列吗?这是给定计划我唯一能想到的解释。

© www.soinside.com 2019 - 2024. All rights reserved.