Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google cloud platform 在Cloud Paner中的交错二级索引上使用存储子句是否有好处?_Google Cloud Platform_Google Cloud Spanner - Fatal编程技术网

Google cloud platform 在Cloud Paner中的交错二级索引上使用存储子句是否有好处?

Google cloud platform 在Cloud Paner中的交错二级索引上使用存储子句是否有好处?,google-cloud-platform,google-cloud-spanner,Google Cloud Platform,Google Cloud Spanner,如果我们在二级索引中使用Interleave选项,那么使用storing子句还有好处吗 是的,尽管它不太可能是一个主要的好处,但仍然有好处: 假设你有交错的表格歌手->专辑->歌曲,你有一个索引: CREATE INDEX SongsBySingerSongName ON Songs(SingerId, SongName), INTERLEAVE IN Singers 我们还假设Songs有一个FLOAT64列,LengthInSeconds,用于存储歌曲的长度 如果要查找以“T”开头

如果我们在二级索引中使用Interleave选项,那么使用storing子句还有好处吗


是的,尽管它不太可能是一个主要的好处,但仍然有好处:

假设你有交错的表格歌手->专辑->歌曲,你有一个索引:

CREATE INDEX SongsBySingerSongName ON Songs(SingerId, SongName),
    INTERLEAVE IN Singers
我们还假设
Songs
有一个
FLOAT64
列,
LengthInSeconds
,用于存储歌曲的长度

如果要查找以“T”开头且长度小于4分钟的
SingerId
123的所有歌曲,可以通过以下方式执行查询:

  • 使用
    SongsBySingerSongName
    查找Singer 123的所有歌曲 以“T”开头的
  • 对于这些歌曲,请使用
    歌曲
    返回至 查找
    LengthInSeconds
    以按长度过滤
  • 由于
    Songs
    SongsBySingerSongName
    Singers
    表中交错排列,我们知道我们的数据应该都在同一台机器上,这意味着它将驻留在同一台机器上,这意味着步骤(2)中的反向连接不会非常昂贵。但是,本地反向联接仍然会产生查找数据的成本,因此通过使用
    存储
    子句保存步骤(2)仍然可以减少查询延迟和总体成本。您可能希望对您的工作负载进行基准测试,以查看额外存储子句是否提供了净好处

    通常,如果查询中的筛选器引用索引中的列(键列或“存储”列),则可以在对基表进行反向联接之前对筛选器进行评估,如果筛选器不匹配,则可以避免反向联接。如果筛选器引用的列不在索引中,则必须首先执行反向联接以获取筛选器引用的列值