cassandrasasi索引允许在单个字段上进行类似于sql的查询。我想知道是否可以对多个字段执行类似的查询:
SELECT * FROM CUSTOMERS WHERE FIRSTNAME LIKE 'joh%' AND LASTNAME LIKE 'smi%'
这是否可能使用sasi索引或cassandra中的其他内容?
deyfvvtc1#
是的,这是可能的,但只有通过使用允许过滤。根据datastax文档-“如果使用了allow filtering,sasi还支持使用and的多个 predicate 的查询。在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
1条答案
按热度按时间deyfvvtc1#
是的,这是可能的,但只有通过使用允许过滤。
根据datastax文档-“如果使用了allow filtering,sasi还支持使用and的多个 predicate 的查询。在sasi中,由于即使使用了allow filtering,也没有执行过滤,因此没有意识到使用过滤的性能缺陷“-https://docs.datastax.com/en/dse/5.1/cql/cql/cql_using/usesasiindexconcept.html
但这只是一个语法规则,当两列上都有sasi索引时,它不应该导致性能下降。
您可以在这里阅读大量有关sasi实现的信息:http://www.doanduyhai.com/blog/?p=2058