每个键空间有很多表,因此我想根据限制条件过滤表。我尝试了这个查询,但它并没有真正给出我想要的预期结果:
SELECT table_name FROM system_schema.tables
WHERE keyspace_name = 'test'
and table_name >= 'test_001_%';
显示的输出是:
'table_name'
---------------------
'test_001_metadata'
'test_001_time1'
'test_001_time2'
'test_001_time3'
'test_001_time4'
'test_002_metadata'
'test_002_time1'
'test_002_time2'
'test_002_time3'
我真正想要的是: 显示的输出是:
'table_name'
---------------------
'test_001_metadata'
'test_001_time1'
'test_001_time2'
'test_001_time3'
'test_001_time4'
另一种方法是通过在table_name上创建二级索引来使用LIKE
关键字。但是,如果它可能导致问题,我有点怀疑,因为它是一个系统表。另一个问题是,群集列ACTUALLY是否支持二级索引?
答案 0 :(得分:1)
在删除上一个索引后,在SASI
列上创建一个包含模式的table_name
索引并尝试查询
SELECT table_name FROM system_schema.tables
WHERE keyspace_name = 'test'
and table_name LIKE '%test_001_%';
使用mode contains创建SASI
索引的命令如下:
CREATE CUSTOM INDEX ON system_schema.tables(table_name)
USING 'org.apache.cassandra.index.sasi.SASIIndex'
WITH OPTIONS = {'analyzer_class': 'org.apache.cassandra.index.sasi.analyzer.StandardAnalyzer',
'case_sensitive': 'false', 'tokenization_normalize_uppercase': 'true', 'mode': 'CONTAINS'}
对于第二个问题,您无法在PRIMARY KEY
的任何内容上创建二级索引。