---
title: Spark执行含超多列cast string to double表达式的查询SQL时，例如500列，SQL查询性能差的解决方法
description: "Spark OmniOperator针对超多变长类型列进行聚合查询时，例如500例，SQL查询性能差。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/240RC2/bds/kunpengbds_omniruntime_20_0276.html
sourcePath: /source/zh/kunpengboostkithistory/240RC2/bds/kunpengbds_omniruntime_20_0276.html
indexId: ba4a03815cf3e53b5a5008de19c50bf5d399d926ebb5aad4c8bf05f013bc8b8180
---
# Spark执行含超多列cast string to double表达式的查询SQL时，例如500列，SQL查询性能差的解决方法

#### 问题现象描述

Spark OmniOperator针对超多变长类型列进行聚合查询时，例如500例，SQL查询性能差。


#### 关键过程、根本原因分析

变长类型列进行聚合操作时存在cast string to double表达式处理，该处理通过Codegen实现。Codegen本身存在编译开销，即SQL查询性能由编译开销和算子执行开销组成。当超多列需要同时进行Codegen编译时，编译开销远大于OmniOperator算子执行时间，导致整体SQL查询性能慢。


#### 结论、解决方案及效果

当存在超多列需要进行表达式Codegen的SQL查询场景，建议回退至原生Spark进行查询，该操作不影响任务结果的一致性。
