首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >了解二级索引

了解二级索引
EN

Stack Overflow用户
提问于 2017-04-06 06:20:19
回答 2查看 532关注 0票数 2

如果我有Table Table

代码语言:javascript
复制
CREATE TABLE Users (
    userId STRING(36) NOT NULL,
    contactName STRING(300) NOT NULL,
    eMail STRING(100) NOT NULL,
    ....
) PRIMARY KEY (userId)

和二级索引

代码语言:javascript
复制
CREATE NULL_FILTERED INDEX ActiveUsersByEMail 
ON Users (
    eMail,
    isActive,
)

然后我选择record by:

代码语言:javascript
复制
SELECT * FROM Users WHERE eMail = 'test@test.com' AND isActive = TRUE

扳手将自动查看索引,获取userId并给我一个记录?

或者我需要创建

代码语言:javascript
复制
CREATE NULL_FILTERED INDEX ActiveUsersByEMail_01 
ON Users (
    eMail,
    isActive,
    userId
)

首先以userId为例:

代码语言:javascript
复制
SELECT userId from Users@{FORCE_INDEX=ActiveUsersByEMail_01} WHERE eMail = 'test@test.com' AND isActive = TRUE

然后我通过以下方式记录下来:

代码语言:javascript
复制
`SELECT * FROM Users WHERE userId = '${userId}'``

问题是标准选择是否自动使用扳手辅助索引?条件是否匹配辅助索引键?

EN

回答 2

Stack Overflow用户

发布于 2017-04-06 06:36:32

您应该使用FORCE_INDEX,因为云扳手只有在极少数情况下才会选择索引,如here所述。您可以使用STORING子句将数据直接添加到索引中,从而允许您直接从索引中读取数据以避免第二次调用。对于应用程序中的常见查询模式,建议这样做。

票数 2
EN

Stack Overflow用户

发布于 2017-04-06 16:34:02

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

代码语言:javascript
复制
SELECT * from Users@{FORCE_INDEX=ActiveUsersByEMail} WHERE eMail = 'test@test.com' AND isActive = TRUE

此时,搜索是在索引和行上进行的,其中包含所有字段

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43242591

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档