---
title: Optimize queries
description: Optimize queries to improve performance and reduce their memory and compute (CPU) requirements in InfluxDB. Learn how to use observability tools to analyze query execution and view metrics.
url: https://docs.influxdata.com/influxdb3/cloud-serverless/query-data/troubleshoot-and-optimize/optimize-queries/
estimated_tokens: 1222
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb3/cloud-serverless/query-data/troubleshoot-and-optimize/optimize-queries/
date: '2025-04-02T15:54:32-06:00'
lastmod: '2025-04-02T15:54:32-06:00'
---

Optimize SQL and InfluxQL queries to improve performance and reduce their memory and compute (CPU) requirements.
Learn how to use observability tools to analyze query execution and view metrics.

#### Custom partitioning not supported

InfluxDB Cloud Serverless doesn’t support custom partitioning.

Custom partitioning can benefit queries that look for a specific tag value in the `WHERE` clause.
To use custom partitioning, consider [InfluxDB Cloud Dedicated](/influxdb3/cloud-dedicated/admin/custom-partitions/)or [InfluxDB Clustered](/influxdb3/clustered/admin/custom-partitions/).

* [Why is my query slow?](#why-is-my-query-slow)
* [Strategies for improving query performance](#strategies-for-improving-query-performance)
  * [Query only the data you need](#query-only-the-data-you-need)

* [Recognize and address bottlenecks](#recognize-and-address-bottlenecks)

## Why is my query slow?

Query performance depends on factors like the time range and query complexity.
If a query is slower than expected, consider the following potential causes:

* The query spans a large time range, which increases the amount of data being processed.
* The query performs intensive operations, such as:
  * Sorting or re-sorting large datasets with `ORDER BY`.
  * Querying many string values, which can be computationally expensive.

## Strategies for improving query performance

The following design strategies generally improve query performance and resource usage:

* Follow [schema design best practices](/influxdb3/cloud-serverless/write-data/best-practices/schema-design/) to simplify and improve queries.
* [Query only the data you need](#query-only-the-data-you-need) to reduce unnecessary processing.
* [Downsample data](/influxdb3/cloud-serverless/process-data/downsample/) to decrease the volume of data queried.

### Query only the data you need

#### Include a WHERE clause

InfluxDB 3 stores data in a Parquet file for each measurement and day, and
retrieves files from the Object store to answer a query.
To reduce the number of files that a query needs to retrieve from the Object store,
include a [`WHERE` clause](/influxdb3/cloud-serverless/reference/sql/where/) that
filters data by a time range.

#### SELECT only columns you need

Because InfluxDB 3 is a columnar database, it only processes the columns
selected in a query, which can mitigate the query performance impact of[wide schemas](/influxdb3/cloud-serverless/write-data/best-practices/schema-design/#avoid-wide-schemas).

However, a non-specific query that retrieves a large number of columns from a
wide schema can be slower and less efficient than a more targeted
query–for example, consider the following queries:

* `SELECT time,a,b,c`
* `SELECT *`

If the table contains 10 columns, the difference in performance between the
two queries is minimal.
In a table with over 1000 columns, the `SELECT *` query is slower and
less efficient.

## Recognize and address bottlenecks

To identify performance bottlenecks, learn how to [analyze a query plan](/influxdb3/cloud-serverless/query-data/troubleshoot-and-optimize/analyze-query-plan/).
Query plans provide runtime metrics, such as the number of files scanned, that may reveal inefficiencies in query execution.

#### Request help to troubleshoot queries

Some bottlenecks may result from suboptimal query [execution plans](/influxdb3/cloud-serverless/reference/internals/query-plan/#physical-plan) that are outside your control. Examples include:

* Sorting (`ORDER BY`) data that is already sorted.
* Retrieving numerous small Parquet files from the object store instead of fewer, larger files.
* Querying many overlapped Parquet files.
* Performing a high number of table scans.

If you’ve followed steps to [optimize](#why-is-my-query-slow) and[troubleshoot a query](/influxdb3/cloud-serverless/query-data/troubleshoot-and-optimize/troubleshoot/),
but it still doesn’t meet performance requirements, request help troubleshooting.
Customers with an InfluxDB Cloud Serverless [annual or support contract](https://www.influxdata.com/influxdb-cloud-pricing/)can [contact InfluxData Support](https://support.influxdata.com/) for assistance.

#### Query trace logging

Customers with an InfluxDB Cloud Serverless [annual or support contract](https://www.influxdata.com/influxdb-cloud-pricing/) can [contact InfluxData Support](https://support.influxdata.com/) to enable tracing for queries.
With tracing enabled, InfluxData Support can analyze system processes and logs for specific query instances.

The tracing system uses the [OpenTelemetry traces](https://opentelemetry.io/docs/concepts/signals/traces/) model to provide observability into requests and identify performance bottlenecks.

#### Related

* [Query data with SQL](/influxdb3/cloud-serverless/query-data/sql/)
* [Query data with InfluxQL](/influxdb3/cloud-serverless/query-data/influxql/)
