我想用golang(更喜欢GoCql)编写一个简单的程序来计算Cassandra表中的记录数。因此,我可以一次减少db上的负载量,并减少超时的概率。我只是想用where子句计算元素的数量。如果可能的话,请简短地给出答案,我是个新手。这对我有很大帮助。类似于查询具有给定userId的用户的订单数量
Select * from KeySpace.OrderTable where userid = userId
1aaf6o9v1#
下面是一个极其简化的应用程序,它使用GoCQL驱动程序计算分区local的system.local表中的行数:
local
system.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中所述。干杯
COUNT()
1条答案
按热度按时间1aaf6o9v1#
下面是一个极其简化的应用程序,它使用GoCQL驱动程序计算分区
local
的system.local
表中的行数:只需记住,您应该只计算分区内的行数。无边界查询(不限于分区键)将执行全表扫描,这很昂贵,如我在Why
COUNT()
is bad in Cassandra中所述。干杯