如果我有桌子 表
CREATE NULL_FILTERED INDEX ActiveUsersByEMail
ON Users (
eMail,
isActive,
)
和二级索引
SELECT * FROM Users WHERE eMail = 'test@test.com' AND isActive = TRUE
我选择记录:
CREATE NULL_FILTERED INDEX ActiveUsersByEMail_01
ON Users (
eMail,
isActive,
userId
)
spanner会自动查看索引,取userId并给我一个记录吗?。
或者我需要创建
SELECT userId from Users@{FORCE_INDEX=ActiveUsersByEMail_01} WHERE eMail = 'test@test.com' AND isActive = TRUE
首先使用userId:
`SELECT * FROM Users WHERE userId = '${userId}'``
然后我记录:
AfterViewInit
如果条件匹配辅助索引键,问题是否自动使用或不使用标准选择的扳手二级索引?
答案 0 :(得分:2)
您应该使用FORCE_INDEX,因为Cloud Spanner只会在极少数情况下选择索引here。您可以使用STORING子句将数据直接添加到索引,允许您直接从索引读取数据以避免第二次调用。建议您在应用程序中使用常见的查询模式。
答案 1 :(得分:0)
在github我问同样的问题,事实证明这很容易做到(没有创建额外的索引):
SELECT * from Users@{FORCE_INDEX=ActiveUsersByEMail} WHERE eMail = 'test@test.com' AND isActive = TRUE
此时搜索正在进行索引,行包含所有字段