如何使用GoCQL驱动程序计算Cassandra表中的记录数?

hpxqektj  于 2022-09-27  发布在  Go
关注(0)|答案(1)|浏览(148)

我想用golang(更喜欢GoCql)编写一个简单的程序来计算Cassandra表中的记录数。因此,我可以一次减少db上的负载量,并减少超时的概率。我只是想用where子句计算元素的数量。
如果可能的话,请简短地给出答案,我是个新手。这对我有很大帮助。
类似于查询具有给定userId的用户的订单数量

Select * from KeySpace.OrderTable where userid = userId
1aaf6o9v

1aaf6o9v1#

下面是一个极其简化的应用程序,它使用GoCQL驱动程序计算分区localsystem.local表中的行数:

package main

import (
    "fmt"
    "github.com/gocql/gocql"
)

func main() {
    // connect to a Cassandra cluster running locally
    cluster := gocql.NewCluster("127.0.0.1:9042")
    session, _ := _cluster.CreateSession()

    iter := session.Query(`SELECT COUNT(version) FROM system.local WHERE key = 'local'`).Iter()
    for iter.Scan(&rows) {
        fmt.Printf("%d rows\n", rows)
    }
}

只需记住,您应该只计算分区内的行数。无边界查询(不限于分区键)将执行全表扫描,这很昂贵,如我在Why COUNT() is bad in Cassandra中所述。干杯

相关问题