使用TSDB 引擎,必须指定sortColumns参数。TSDB引擎根据sortColumns 的各列的顺序维护一个索引,因此可以优先把查询频率高的字段作为sortColumns 中位置靠前的列。例如:
dbName = "dfs://tsdb_value_int" if(existsDatabase(dbName)){ dropDatabase(dbName) } db = database(directory=dbName, partitionType=VALUE, partitionScheme=1..10,engine="TSDB") n = 10000 t = table(n:n, [`int,`long,`short,`float,`double,`string,`char,`bool,`timestamp], [INT, LONG, SHORT,FLOAT, DOUBLE, STRING, CHAR, BOOL, TIMESTAMP]) pt1 = db.createPartitionedTable(table=t, tableName=`pt1, partitionColumns=`int,compressMethods=dict(`timestamp`long,`delta`delta),sortColumns=`short`int, keepDuplicates=ALL) t[`int] = rand(100,n) t[`long] = rand(100000l,n) t[`short] = rand(10h,n) t[`float] = rand(100.0f,n) t[`double] = rand(100.0,n) t[`string] = rand("A"+string(1..1000),n) t[`char] = rand(100,n) t[`bool] = rand([true,false],n) tem = 2012.06.13T13:30:10.000 ts = array(timestamp,0,n) for(i in 1..n){ tem=temporalAdd(tem, 1, `s) ts.append!(tem) } t[`timestamp] = ts pt1.append!(t)