在PolarDB中,在每个表上使用的字段上加了COLUMNAR=1,是哪儿使用的不正确的吗?-[阿里云_云淘科技]

有个三表关联后取topn的sql,行式使用了0.04 sec,列式2.36 sec,列式查询反而变慢了,explain的结果在下面图里的在PolarDB中,在每个表上使用的字段上加了COLUMNAR=1,是哪儿使用的不正确的吗?-[阿里云_云淘科技]
实例:pi-bp19d574401edl668
在PolarDB中,我在每个表上使用的字段上加了COLUMNAR=1,是哪儿使用的不正确的吗

以下为热心网友提供的参考意见

在PolarDB中,可以在创建表或修改表结构时,通过COMMENT字段添加COLUMNAR=1来为表中的每个字段启用列存索引。例如,使用CREATE TABLE语句或者ALTER TABLE语句在表的COMMENT字段中增加COLUMNAR=1的字段。如:

CREATE TABLE t4 COMMENT 'COLUMNAR=1' SELECT col1, col2 FROM t3;

在这个例子中,表t4的所有列(col1, col2,以及后续新增的列)都会创建列存索引。如果某个字段上已经存在注释内容,你可以在现有注释内容后面添加COLUMNAR=1或COLUMNAR=0,为了清晰可见,建议将COLUMNAR=1或COLUMNAR=0添加到注释内容的前面。

以下为热心网友提供的参考意见

在PolarDB中,COLUMNAR=1是一个表的存储参数,它告诉PolarDB使用列式存储。列式存储是一种将每一列的数据存储在一起的数据库存储方式,而不是像行式存储那样将每一行的数据存储在一起。这种方式在某些情况下可以提高查询性能,特别是在进行大量列的选择性查询时。

然而,列式存储并不总是比行式存储更快。在一些情况下,列式存储可能会导致性能下降。例如,如果你的查询涉及到大量的行,或者你的查询需要访问同一行中的多个列,那么行式存储可能会更快。

在你的例子中,你的查询可能更适合行式存储。这是因为你的查询涉及到三表关联,并且需要获取结果的前N行,这可能需要访问多行数据。在这种情况下,行式存储可能会更快,因为它可以一次性读取多行数据,而列式存储则需要多次读取同一列的数据。

另外,你的查询可能没有充分利用列式存储的优势。列式存储通常在处理大量列的选择性查询时表现更好,例如只查询某一列的数据。在你的查询中,你可能需要访问多列的数据,这可能会降低列式存储的性能。

总的来说,你应该根据你的查询需求和数据特性来选择是否使用列式存储。如果你发现列式存储的性能不如预期,你可以尝试调整你的查询,或者考虑使用行式存储。

以下为热心网友提供的参考意见

这条sql,列存很难跑到40ms的,看看Last_query_cost是多少,应该想办法怎么走到行存上去。此回答整理自钉群“PolarDB专家面对面 – HTAP(列存索引)”

本文来自投稿,不代表新手站长_郑州云淘科技有限公司立场,如若转载,请注明出处:https://www.cnzhanzhang.com/20483.html

(0)
匿名
上一篇 2024年1月2日
下一篇 2024年1月2日

相关推荐

新手站长从“心”出发,感谢16年您始终不离不弃。