【问题标题】:Cassandra SASI index with multiple fields具有多个字段的 Cassandra SASI 索引
【发布时间】:2024-01-17 21:15:01
【问题描述】:

Cassandra SASI 索引允许在单个字段上进行类似于 SQL LIKE 的查询。我想知道是否可以对多个字段执行 LIKE 查询:

SELECT * FROM CUSTOMERS
WHERE FIRSTNAME LIKE 'joh%'
AND LASTNAME LIKE 'smi%'

这可以在 Cassandra 中使用 SASI 索引或其他东西吗?

【问题讨论】:

    标签: cassandra cql cqlsh


    【解决方案1】:

    是的,但只能通过使用 ALLOW FILTERING。

    根据 DataStax 文档-“如果使用 ALLOW FILTERING,SASI 还支持使用 AND 进行多个谓词的查询。使用 SASI,由于即使使用 ALLOW FILTERING 也不会执行过滤,因此无法实现使用过滤的性能缺陷" - https://docs.datastax.com/en/dse/5.1/cql/cql/cql_using/useSASIIndexConcept.html

    SELECT * FROM CUSTOMERS WHERE FIRSTNAME LIKE 'joh%' AND LASTNAME LIKE 'smi%' allow filtering;
    

    但这只是一个语法规则,当您在两列上都有 SASI 索引时,它不会导致性能下降。

    您可以在这里阅读很多关于 SASI 实施的信息:http://www.doanduyhai.com/blog/?p=2058

    【讨论】:

      最近更新 更多