Query Performance Optimisation – Understanding Record Access Order in ClickHouse

Shiv Iyer
Posted on January 31, 2023

In ClickHouse, the Record Access Order refers to the order in which rows of data are accessed when executing a query. The order can be determined by a variety of factors such as the indexes used, the order of data stored in the table, or any sorting or ordering specified in the query. The Record Access Order is an important aspect of query optimization as it can impact the overall performance and efficiency of the query. In order to ensure optimal performance, it is recommended to use indexes and sort data in the manner that best suits the intended use-case.

How to index Tables in ClickHouse for optimal Record Access Order?

In ClickHouse, record access order is optimized using a combination of clustered and distributed indexes. The clustered index determines the physical order of data on disk, whereas the distributed index determines how data is distributed among nodes in a cluster.

To optimize record access order in ClickHouse, you should take the following steps:

  1. Identify the columns that are frequently used in your SELECT statements and that determine the order in which you want to access the records.
  2. Choose the right indexing strategy. ClickHouse supports several indexing strategies including Clustered, Distributed, Replicated, and Local.
  3. For optimal record access order, use the Clustered index on the column(s) that you identified in step 1. The Clustered index will determine the physical order of the data on disk.
  4. If you want to distribute data among nodes in a cluster, use the Distributed index. This index will determine how data is partitioned and stored among nodes.
  5. If you want to replicate data across multiple nodes, use the Replicated index. This index will ensure that data is copied to all nodes in the cluster.
  6. If you don’t need to distribute or replicate data, you can use a Local index. This type of index will only be used for a single node.
  7. Finally, you can combine multiple indexing strategies to achieve the optimal record access order for your use case.

By optimizing record access order, you can improve the performance of your SELECT statements and reduce the latency of your queries.