cassandra 如何获取column有值的所有行(不包括空列)?

fxnxkyjh  于 2023-08-04  发布在  Cassandra
关注(0)|答案(2)|浏览(141)

我有一个数据库,不是所有的列都有值,但是我只需要得到那些有值的行。示例:我的数据库有3列:“id”、“first_name”和“last_name”。

| id       | first_name | last_name |
| -------- | ---------- | --------- |
| 001      | Josh       | Irakly    |
| 002      | Carl       | Bruklin   |
| 003      |            | Drishlya  |
| 004      | Bick       |           |
| 005      |            | Mulan     |

字符串
我想获取“first_name”列具有值的所有行,示例如下:

| id       | first_name | last_name |
| -------- | ---------- | --------- |
| 001      | Josh       | Irakly    |
| 002      | Carl       | Bruklin   |
| 004      | Bick       |           |

1sbrub3j

1sbrub3j1#

我想出来了,解决办法是:

SELECT *
FROM tableName
WHERE first_name > ''
ALLOW FILTERING

字符串

rryofs0p

rryofs0p2#

尽管你认为你已经找到了一个“解决方案”,但不建议做这种类型的查询。
这样的操作需要一个完整的表扫描,Cassandra必须读取每个分区。它可能适用于非常小的数据集和/或非常小的集群,但它不能扩展。
想象一下这样的场景:表包含分布在大量节点上的数百万或数十亿条记录--查询将超时。
如果您需要执行此查询,则表明您在数据建模时犯了错误。一般建议是为每个应用程序查询设计一个表,以便为应用程序优化读取。干杯!

相关问题