Back to Questdb

ALTER MATERIALIZED VIEW ADD INDEX

documentation/query/sql/alter-mat-view-alter-column-add-index.md

latest2.3 KB
Original Source

Adds an index to a SYMBOL column in a materialized view, improving query performance for filtered lookups.

Syntax

ALTER MATERIALIZED VIEW viewName ALTER COLUMN columnName ADD INDEX [ CAPACITY n ]

Parameters

ParameterDescription
viewNameName of the materialized view
columnNameName of the SYMBOL column to index
CAPACITYOptional index capacity (advanced; use default unless you understand implications)

When to use

Add an index when:

  • Queries frequently filter by a SYMBOL column (e.g., WHERE symbol = 'BTC-USD')
  • The column has high cardinality (many distinct values)
  • Query performance on the materialized view needs improvement

Example

questdb-sql
ALTER MATERIALIZED VIEW trades_hourly
  ALTER COLUMN symbol ADD INDEX;

Behavior

AspectDescription
Operation typeAtomic, non-blocking, non-waiting
Immediate effectSQL optimizer starts using the index once created
Column requirementColumn must be of type SYMBOL

:::note Index capacity and symbol capacity are different settings. Only change index capacity if you understand the implications. :::

Permissions (Enterprise)

Adding an index requires the ALTER MATERIALIZED VIEW permission:

questdb-sql
GRANT ALTER MATERIALIZED VIEW ON trades_hourly TO user1;

Errors

ErrorCause
materialized view does not existView with specified name doesn't exist
column does not existColumn not found in the view
column is not a symbolIndex can only be added to SYMBOL columns
index already existsColumn is already indexed
permission deniedMissing ALTER MATERIALIZED VIEW permission (Enterprise)

See also