二级索引在扳手的Update和Delete语句中不起作用。因此,有时简单的更新和删除语句会花费很多时间
我尝试了这个: “更新table1 @ {FORCE_INDEX = i_index1}设置column1 ='abc',其中column2 ='xyz'”
如果这不起作用,那么可以快速进行更新和删除语句的替代方法
答案 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条件值以进行匹配。如果要匹配许多列,可能需要稍微更改一下语句。