Teradata Primary and Secondary Index: Understanding the Differences and Importance for Performance Tuning

The Teradata primary index differs from a primary key. Its sole purpose is to distribute data evenly among all AMPs. Though the primary index and primary key are frequently equivalent, the primary index is not inherently a primary key.

How many indexes can be defined per index type?

A table can have a maximum of one primary index but up to 32 secondary indexes.

How many columns can the indexes consist of?

Both the primary and secondary indexes can consist of up to 64 columns.

What about the uniqueness of Teradata indexes?

The Teradata primary and secondary indexes can be unique or non-unique. However, the distribution of rows for a non-unique secondary index (NUSI) is different (not distributed according to rowhash).

Can the definition of an index in Teradata be changed?

You can drop a secondary index anytime and create it with a different definition.
We cannot change the column set of a primary index. However, you can change it from NUPI to UPI, for example:

ALTER TABLE Customer MODIFY UNIQUE PRIMARY INDEX (>NUPI columns>)

Does the maintenance of the Teradata Primary Index or Secondary Index cause overhead?

The primary index deteriorates performance only if the distribution is skewed. No maintenance is needed.

A secondary index deteriorates performance because it is mapped in a sub-table, which must be maintained with every UPDATE and INSERT statement. This means we should only create a secondary index if it is also used!

How is a Teradata Index stored?

The primary index does not need its data structure since it simply distributes the rows according to a hashing algorithm.
The secondary index is stored in a sub-table.

What about Row-level Partitioning on Teradata Indexes?

Row-level partitioning is only available for the Teradata primary index.

How are the rows on the AMPs sorted?

A rowhash of the primary index of an unpartitioned table sorts the rows. If the table is partitioned, it is sorted by rowhash after the rows have been assigned to the correct partitions.
For a non-unique secondary index, the rows can be sorted by the rowhash or value (INTEGER datatype only). The unique secondary index can only be sorted by rowhash.

Teradata Docs: The Primary Index

Related Services

⚡ Need Help Optimizing Your Data Platform?

We cut data platform costs by 30–60% without hardware changes. 25+ years of hands-on tuning experience.

Explore Our Services →

📋 Considering a Move From Teradata?

Get a personalized migration roadmap in 2 minutes. We have migrated billions of rows from Teradata to Snowflake, Databricks, and more.

Free Migration Assessment →

📊 Data Platform Migration Survey

Help us map where the industry is heading. Results are public — see what others chose.

1. What is your current data platform?

2. Where are you migrating to (or evaluating)?

Migrating FROM
Migrating TO

Thanks for voting! Share this with your network.

Follow me on LinkedIn for daily insights on data warehousing and platform migrations.

Stay Ahead in Data Warehousing

Get expert insights on Teradata, Snowflake, BigQuery, Databricks, Microsoft Fabric, and modern data architecture — delivered to your inbox.

Leave a Comment

DWHPro

Expert network for enterprise data platforms. Senior consultants, project teams built for your challenge — across Teradata, Snowflake, Databricks, and more.

📍Vienna, Austria & Jacksonville, Florida

Quick Links
Services Team Teradata Book Blog Contact Us
Connect
LinkedIn → [email protected]
Newsletter

Join 4,000+ data professionals.
Weekly insights on Teradata, Snowflake & data architecture.