0°

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

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

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

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

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

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

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

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

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

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

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====