试了下DUCKDB,查询时间7,8秒
放parquet会更慢点,但是更省内存。
作分析够用了,但是如果是作为查询服务得用其他方法。
import duckdb
import random
row_count = 1_000_000_000
conn = duckdb.connect()
conn.execute("create table test_table(id integer);")
sql = """insert into test_table select id from generate_series(%s) t(id);""" % row_count
conn.execute(sql)
data_list = [str(i) for i in random.choices(range(row_count), k=20000)]
conn.execute("select * from test_table where id in (%s)" % ','.join(data_list));
result = conn.fetchall()
【 在 chemphy123 的大作中提到: 】
: 我有10亿个字符串,每个大概100个字符。
: 这些数据存磁盘上,gzip压缩后大概有18G。
: 需求是,一次按id号从中取20000个字符串出来。
: ...................
--
FROM 223.104.94.*