Google cloud platform 理解二级索引

Google cloud platform 理解二级索引,google-cloud-platform,google-cloud-spanner,Google Cloud Platform,Google Cloud Spanner,如果我有桌子 桌子 二级指标 CREATE NULL_FILTERED INDEX ActiveUsersByEMail ON Users ( eMail, isActive, ) 我通过以下方式选择记录: SELECT * FROM Users WHERE eMail = 'test@test.com' AND isActive = TRUE `SELECT * FROM Users WHERE userId = '${userId}'`` 扳手将自动查看索引,获取用户

如果我有桌子 桌子

二级指标

CREATE NULL_FILTERED INDEX ActiveUsersByEMail 
ON Users (
    eMail,
    isActive,
)
我通过以下方式选择记录:

SELECT * FROM Users WHERE eMail = 'test@test.com' AND isActive = TRUE
`SELECT * FROM Users WHERE userId = '${userId}'``
扳手将自动查看索引,获取用户ID并给我一条记录

或者我需要创造

CREATE NULL_FILTERED INDEX ActiveUsersByEMail_01 
ON Users (
    eMail,
    isActive,
    userId
)
并首先通过以下方式获取用户ID:

SELECT userId from Users@{FORCE_INDEX=ActiveUsersByEMail_01} WHERE eMail = 'test@test.com' AND isActive = TRUE
然后我通过以下方式录制了一张唱片:

SELECT * FROM Users WHERE eMail = 'test@test.com' AND isActive = TRUE
`SELECT * FROM Users WHERE userId = '${userId}'``

问题是,如果条件与二级索引键匹配,是否自动为标准选择使用扳手二级索引?

您应该使用FORCE\u索引,因为云扳手仅在上述罕见情况下选择索引。您可以使用该子句将数据直接添加到索引中,从而允许您直接从索引中读取数据,以避免第二次调用。这是对应用程序中常见的查询模式的建议。

在中,我问了同样的问题,结果证明,这很容易做到(无需创建额外的索引):


此时搜索正在进行,索引和行随所有字段一起出现

这也意味着:如果在select i include only key columns中,扳手再次直接从索引读取数据以避免第二次调用?请注意,您应该能够看到扳手是如何执行查询的(使用索引或主表)通过向它索取计划。这可以通过executeSql方法()中的QueryMode选项实现,也可以在数据库上运行查询时通过web界面实现。