[用户在YugabyteDB社区Slack上发布的问题]
我有一个关于YCQL中聚类列顺序的问题。下面是PRIMARY键的定义:
PRIMARY KEY (fsym_id, item, fiscalperiodenddate, startdate)
) WITH CLUSTERING ORDER BY (item ASC, fiscalperiodenddate DESC, startdate DESC).
当他们尝试查询时,聚类键的顺序是否重要?例如:
select * from factsetestimatev4.con_af where fsym_id = 'Q2YN1N-R' and item='EPS' and startdate<='2022-05-03' and enddate>='2022-05-03' and fiscalperiodenddate>='2022-12-31';
和
select * from factsetestimatev4.con_af where fsym_id = 'Q2YN1N-R' and item='EPS' and fiscalperiodenddate>='2022-12-31' and startdate<='2022-04-04' and enddate>='2022-04-04';
根据我的理解,这应该无关紧要。
查询中谓词的顺序无关紧要。下面的例子是相同的:
WHERE cond1 and cond2
和
WHERE cond2 and cond1
但是一个好的PRIMARY KEY的选择与上述无关。
同样,enddate
不是PK的一部分。所以应用程序可能会有一些效率低下,因为它可能需要扫描startdate < Apr/04th..
的所有内容以获得提供的fsym_id, item, fiscalperiodenddate
。