首页 > Cassandra怎么实现查询“不等于某值”操作?

Cassandra怎么实现查询“不等于某值”操作?

背景描述:

在Cassandra数据库下建立一个表,主键设为(id, status),id是UUID类型,为分区键;status是int类型,是第二主键。
现在status有几个可能的值,假设是1、2、3、4。

遇到的问题:

我想查出status字段不等于2的情况下数据库中的数据,尝试了几种办法都不行,查询了CQL的文档后发现他们不支持
<>/!=等语法,甚至只支持AND,不支持OR
所以想了好久是在是想不出什么好的办法来了。
目前的实现是划分两个CQL语句,一个:
select * from table where status>2
另一个:
select * from table where status<2
然后做两个list,将这两个list合并,最后得到想要的数据。

这样做有点麻烦,所以想问有没有更好的实现方法?
恳请指教~


不支持主要是为了性能考虑,比较流行的实践是在应用端实现,类似你这种做法。用等于来做性能会更好select * from table where status = 1select * from table where status = 3select * from table where status = 4,而且也适合来缓存。比如下次你再拿大于2的,就直接取刚才缓存的3和4就可以了

虽然看起来有点矬,但用nosql就是有代价的

【热门文章】
【热门文章】