Ale*_*xey 3 select cql cassandra cql3 cassandra-2.0
Cassandra CQL3 SELECT语句允许使用IN类似in的元组
SELECT * FROM posts
WHERE userid='john doe' AND (blog_title, posted_at)
IN (('John''s Blog', '2012-01-01), ('Extreme Chess', '2014-06-01'))
Run Code Online (Sandbox Code Playgroud)
从CQ3规范中可以看到:http : //cassandra.apache.org/doc/cql3/CQL.html#selectStmt
在SELECT的IN子句中可以使用的元组数量是否有限制?最大值是多少?
丽贝卡·米尔斯(Rebecca Mills)的DataStax对IN语句中允许的键数提供了一定的限制(使用Cassandra驱动程序时应该做的事情 -第22点):
...特别是对IN语句中键的数目的限制,最多可以有65535个。但是实际上,出于性能原因,您只能在IN中使用少量键。
我认为该限制也适用于您可以指定的元组数。坦白说,我不会试图做到这一点。如果您发送的数量很多,则效果可能会很差。在上SELECT子句CQL文件警告说,关于这个用户:
何时不使用IN
关于何时不使用索引的建议适用于在WHERE子句中使用IN。在大多数情况下,不建议在WHERE子句中使用IN。使用IN会降低性能,因为通常必须查询许多节点。例如,在一个具有30个节点,复制因子为3且一致性级别为LOCAL_QUORUM的单个本地数据中心群集中,单个键查询发送到两个节点,但是如果查询使用IN条件,则将被查询的节点可能更高,最多可达20个节点,具体取决于密钥在令牌范围内的位置。
可以说,虽然可以传递的最大元组数是一个数学问题,但是应该传递的元组数将取决于集群配置,JVM实现和一些常识。