GCP Spanner:二级索引在Update和Delete语句中不起作用

时间:2019-07-23 09:20:43

标签: google-cloud-platform google-cloud-spanner

二级索引在扳手的Update和Delete语句中不起作用。因此,有时简单的更新和删除语句会花费很多时间

我尝试了这个: “更新table1 @ {FORCE_INDEX = i_index1}设置column1 ='abc',其中column2 ='xyz'”

如果这不起作用,那么可以快速进行更新和删除语句的替代方法

1 个答案:

答案 0 :(得分:1)

在大多数情况下,Cloud Spanner会自动选择使查询最有效的索引,而无需指定任何索引。在某些情况下,索引可以选择会使查询变慢的索引。这可能是为什么您的语句长时间运行的解释。

可以通过查看其二级索引来troubleshoot slow queries。如果确实发现索引使查询变慢,则可以specify another index

就您的Cloud Spanner而言,secondary indexes are used for common queries(仅限SELECT语句)可以加速它们;指示UPDATE和DELETE语句将不包含二级索引。

由于您只能在SELECT语句中使用二级索引,因此建议您尝试以下操作:    UPDATE表1       SET栏1 =“ abc”     列X IN        (选择列X           FROM table1 @ {FORCE_INDEX = i_index1}          WHERE column2 ='xyz')

您基本上会检索列值,并使用辅助索引作为中介,将它们设置为WHERE条件值以进行匹配。如果要匹配许多列,可能需要稍微更改一下语句。