当开启全局索引功能后,TcaplusDB 将支持按照普通字段查询,查询条件中的字段必须是建立了全局索引的字段。
如果是聚合查询,那么聚合查询的字段也必须是建立了全局索引的字段。
一个索引查询请求,最多返回3000条记录。
支持=, >, >=, <, <=, !=, between, in, not in, like, not like, and, or
,如:
注意:
- between 查询时,between a and b,对应的查询范围为[a, b],如 between 1 and 100,是会包含1和100这两个值的,即查询范围为[1,100]。
- like 查询时,支持模糊匹配,其中“%”通配符,匹配0个或者多个字符; “_”通配符,匹配1个字符。
tcaplus> select * from pb_generic_index_shardingkey where openid>10 and tconndid<1000;
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|openid|timekey |tconndid|svrid |gamesvrid |other_property |items|lockid |pay|id_uint32|id_int32|
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|201 |"timekey"|201 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|200 |"timekey"|200 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|203 |"timekey"|203 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|204 |"timekey"|204 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|202 |"timekey"|202 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
total 5 records
tcaplus> select * from pb_generic_index_shardingkey where openid between 1 and 300 and tconndid<1000;
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|openid|timekey |tconndid|svrid |gamesvrid |other_property |items|lockid |pay|id_uint32|id_int32|
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|203 |"timekey"|203 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|204 |"timekey"|204 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|201 |"timekey"|201 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|200 |"timekey"|200 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|202 |"timekey"|202 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
total 5 records
tcaplus> select * from pb_generic_index_shardingkey where openid>10 or tconndid<1000;
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|openid|timekey |tconndid|svrid |gamesvrid |other_property |items|lockid |pay|id_uint32|id_int32|
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|202 |"timekey"|202 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|203 |"timekey"|203 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|201 |"timekey"|201 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|200 |"timekey"|200 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|204 |"timekey"|204 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
total 5 records
支持 limit offset 分页查询,如:
注意:
当前 limit 必须与 offset 搭配使用,即不支持 limit 1 或者 limit 0,1。
tcaplus> select * from pb_generic_index_shardingkey where openid>10 limit 3 offset 0;
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|openid|timekey |tconndid|svrid |gamesvrid |other_property |items|lockid |pay|id_uint32|id_int32|
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|200 |"timekey"|200 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|201 |"timekey"|201 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
|202 |"timekey"|202 |"svrid"|"gamesvrid"|[{"key":1,"value":1},{"key":2,"value":2}]|- |[1,2,3,4]|- |1 |1 |
+------+---------+--------+-------+-----------+-----------------------------------------+-----+---------+---+---------+--------+
当前支持的聚合查询包括:sum, count, max, min, avg
,如:
注意:
- 聚合查询不支持 limit offset,即 limit offset 不生效。
- 目前只有 count 支持 distinct,即 select count(distinct(a)) from table where a > 1000,其他情况均不支持 distinct。
tcaplus> select sum(openid), count(*), max(openid), avg(openid) from pb_generic_index_shardingkey where openid>10 ;
1010,5,204,202
支持查询部分字段的值,如:
说明:
对于 Protobuf 表,还支持查询嵌套字段的值,类似:select field1.field2.field3, a, b from table where a > 1000;
tcaplus> select svrid,gamesvrid from pb_generic_index_shardingkey where openid>10 or tconndid<1000;
+------+---------+--------+-------+-----------+
|openid|timekey |tconndid|svrid |gamesvrid |
+------+---------+--------+-------+-----------+
|204 |"timekey"|204 |"svrid"|"gamesvrid"|
+------+---------+--------+-------+-----------+
|203 |"timekey"|203 |"svrid"|"gamesvrid"|
+------+---------+--------+-------+-----------+
|202 |"timekey"|202 |"svrid"|"gamesvrid"|
+------+---------+--------+-------+-----------+
|200 |"timekey"|200 |"svrid"|"gamesvrid"|
+------+---------+--------+-------+-----------+
|201 |"timekey"|201 |"svrid"|"gamesvrid"|
+------+---------+--------+-------+-----------+
total 5 records
select *, a, b from table where a > 1000;
select sum(a), a, b from table where a > 1000;
select count(*), * from table where a > 1000;
select * from table where a > 1000 limit 100 offset 0;
select * from table where a > 1000 group by a;
select sum(a) from table where a > 1000 group by a having sum(a) > 10000;
select * from table1 where table1.a > 1000 and table1.a = table2.b;
select * from table where a > 1000 and b in (select b from table where b < 5000);
select sum(a) as sum_a from table where a > 1000;
本页内容是否解决了您的问题?