【发布时间】: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 SASI 索引允许在单个字段上进行类似于 SQL LIKE 的查询。我想知道是否可以对多个字段执行 LIKE 查询:
SELECT * FROM CUSTOMERS
WHERE FIRSTNAME LIKE 'joh%'
AND LASTNAME LIKE 'smi%'
这可以在 Cassandra 中使用 SASI 索引或其他东西吗?
【问题讨论】:
是的,但只能通过使用 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
【讨论】: