【发布时间】:2019-07-23 09:20:43
【问题描述】:
二级索引在扳手的更新和删除语句中不起作用。因此有时简单的更新和删除语句会花费大量时间
我试过这个: "更新 table1@{FORCE_INDEX=i_index1} 设置 column1='abc' where column2='xyz'"
如果这不起作用,那么快速更新和删除语句的替代方法是什么
【问题讨论】:
标签: google-cloud-platform google-cloud-spanner
二级索引在扳手的更新和删除语句中不起作用。因此有时简单的更新和删除语句会花费大量时间
我试过这个: "更新 table1@{FORCE_INDEX=i_index1} 设置 column1='abc' where column2='xyz'"
如果这不起作用,那么快速更新和删除语句的替代方法是什么
【问题讨论】:
标签: google-cloud-platform google-cloud-spanner
大多数情况下,Cloud Spanner 会自动选择可以使查询最高效的索引,而无需指定任何索引。在某些情况下,索引可以选择会使查询变慢的索引;这可以解释为什么您的语句运行了很长时间。
通过查看二级索引可以troubleshoot slow queries。如果您确实发现某个索引会降低您的查询速度,那么您可以specify another index。
就您的 Cloud Spanner 而言,secondary indexes are used for common queries,所以只有 SELECT 语句,以加快它们的速度;表示 UPDATE 和 DELETE 语句将不包含二级索引。
由于您只能在 SELECT 语句中使用二级索引,我建议您尝试以下操作: 更新表1 SET column1 = 'abc' WHERE 列 X 在 (选择列 X FROM table1@{FORCE_INDEX = i_index1} WHERE column2 = 'xyz')
您基本上检索列值并将它们设置为您要匹配的 WHERE 条件值,使用二级索引作为中介。如果要匹配多列,可能需要稍微更改语句。
【讨论】: