建表时分区字段是否需要加到DUPLICATE KEY中

使用明细表过程中,建立分区,查看官方的样例,分区字段,都放在key中,并且是第一位比如:
CREATE TABLE site_access1 (
event_day DATETIME NOT NULL,
site_id INT DEFAULT ‘10’,
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT ‘’,
pv BIGINT DEFAULT ‘0’
)
DUPLICATE KEY(event_day, site_id, city_code, user_name)
PARTITION BY event_day
DISTRIBUTED BY HASH(event_day, site_id);

但是以下两种方式,可以建表成功:
CREATE TABLE tmp.site_access2 (
site_id INT DEFAULT ‘10’,
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT ‘’,
event_day DATE NOT NULL,
pv BIGINT DEFAULT ‘0’
)
DUPLICATE KEY( site_id, city_code, user_name,event_day)
PARTITION BY range(event_day)()
DISTRIBUTED BY HASH(event_day, site_id);

CREATE TABLE site_access3 (
site_id INT DEFAULT ‘10’,
city_code VARCHAR(100),
user_name VARCHAR(32) DEFAULT ‘’,
event_day DATE NOT NULL,
pv BIGINT DEFAULT ‘0’
)
DUPLICATE KEY( site_id, city_code, user_name)
PARTITION BY range(event_day)()
DISTRIBUTED BY HASH(event_day, site_id);

想问下,但我使用 where event_day=xx and site_id=xx时,这3张不同的建表方式,我的分区裁剪+前缀索引命中会有什么区别吗?

如果分区放在duplicate key中,前缀索引会带上分区字段的值吗?

您可以参考下这篇官方文档中的排序件和前缀索引的介绍:https://docs.starrocks.io/zh-cn/latest/table_design/Sort_key 可以完美的解决您的疑惑 还会详细一些 然后您是什么版本 在参考的时候可以选择下具体的版本号来进行观看 因为不同的版本这块的内容上有一些差异

排序列,我理解,我想确认的是,分区字段,是不是可以不用加到排序列上,也不影响效率

你发的这个页面内容好像变了,会自动跳转到首页,跟楼主同样的问题,感觉分区不就是相当于第一级索引吗?还需要再加到排序列上吗?