是的,它应首先筛选出分区,然后才会对非键值进行过滤,并按照此处提到的实验进行:
https://dzone.com/articles/apache-cassandra-and-allow-filtering
在大多数情况下,我认为在所有密钥之后使用allow过滤是安全的。
它将在很大程度上取决于您过滤掉的数据量 - 如果sport_id = 1的最后一个条件是试图过滤掉大部分数据,那么这将是一个坏主意,因为它给数据库带来了很大的压力,所以你需要考虑这里的权衡。
使用带有分区键的IN子句并不是一个好主意 - 特别是上面的查询看起来并不好看,因为它在分区键上使用IN子句和允许过滤。
建议 - Cassandra非常善于在一秒钟内处理尽可能多的请求,设计理念应该是一次发送更轻量级的查询,而不是尝试发送一个执行大量工作的查询。所以我的建议是在分区密钥上使用=条件触发N调用Cassandra,而不过滤最后一列,然后在代码中组合并执行最终过滤器(您使用的任何语言我认为它可以支持并行发送所有这些调用到数据库)。通过这样做,您可以在数据增长时长期获得性能优势。
</醇>