Apache Geode CHANGELOG

Working with Indexes

The Geode query engine supports indexing. An index can provide significant performance gains for query execution.

A query run without the aid of an index iterates through every object in the collection. If an index is available that matches part or all of the query specification, the query iterates only over the indexed set, and query processing time can be reduced.

  • Tips and Guidelines on Using Indexes

    Optimizing your queries with indexes requires a cycle of careful planning, testing, and tuning. Poorly-defined indexes can degrade the performance of your queries instead of improving it. This section gives guidelines for index usage in the query service.

  • Creating, Listing and Removing Indexes

    The Geode QueryService API provides methods to create, list and remove the index. You can also use gfsh command-line interface to create, list and remove indexes, and use cache.xml to create an index.

  • Creating Key Indexes

    Creating a key index is a good way to improve query performance when data is partitioned using a key or a field value. You can create key indexes by using the createKeyIndex method of the QueryService or by defining the index in cache.xml. Creating a key index makes the query service aware of the relationship between the values in the region and the keys in the region.

  • Creating Hash Indexes

    Hash indexes are deprecated. Geode supports the creation of hash indexes for the purposes of performing equality-based queries.

  • Creating Indexes on Map Fields (“Map Indexes”)

    To assist with the quick lookup of multiple values in a Map (or HashMap) type field, you can create an index (sometimes referred to as a “map index”) on specific (or all) keys in that field.

  • Creating Multiple Indexes at Once

    In order to speed and promote efficiency when creating indexes, you can define multiple indexes and then create them all at once.

  • Maintaining Indexes (Synchronously or Asynchronously) and Index Storage

    Indexes are automatically kept current with the region data they reference. The region attribute IndexMaintenanceSynchronous specifies whether the region indexes are updated synchronously when a region is modified or asynchronously in a background thread.

  • Using Query Index Hints

    You can use the hint keyword to allow Geode’s query engine to prefer certain indexes.

  • Using Indexes on Single Region Queries

    Queries with one comparison operation may be improved with either a key or range index, depending on whether the attribute being compared is also the primary key.

  • Using Indexes with Equi-Join Queries

    Equi-join queries are queries in which two regions are joined through an equality condition in the WHERE clause.

  • Using Indexes with Overflow Regions

    You can use indexes when querying on overflow regions; however, there are caveats.

  • Using Indexes on Equi-Join Queries using Multiple Regions

    To query across multiple regions, identify all equi-join conditions. Then, create as few indexes for the equi-join conditions as you can while still joining all regions.

  • Index Samples

    This topic provides code samples for creating query indexes.