> ## Documentation Index
> Fetch the complete documentation index at: https://www.meilisearch.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Optimize indexing performance with batch statistics

> Learn how to analyze the `progressTrace` to identify and resolve indexing bottlenecks in Meilisearch.

Indexing performance can vary significantly depending on your dataset, index settings, and hardware. The [batch object](/reference/api/batches/list-batches) provides information about the progress of asynchronous indexing operations.

The `progressTrace` field within the batch object offers a detailed breakdown of where time is spent during the indexing process. Use this data to identify bottlenecks and improve indexing speed.

## Understanding the `progressTrace`

`progressTrace` is a hierarchical trace showing each phase of indexing and how long it took.
Each entry follows the structure:

<CodeGroup>
  ```json theme={null}
  "processing tasks > indexing > extracting word proximity": "33.71s"
  ```
</CodeGroup>

This means:

* The step occurred during **indexing**.
* The subtask was **extracting word proximity**.
* It took **33.71 seconds**.

Focus on the **longest-running steps** and investigate which index settings or data characteristics influence them.

## Key phases and how to optimize them

### `computing document changes`and `extracting documents`

| Description                                               | Optimization                                                                                             |
| --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Meilisearch compares incoming documents to existing ones. | No direct optimization possible. Process duration scales with the number and size of incoming documents. |

### `extracting facets` and `merging facet caches`

| Description                                | Optimization                                                                                                   |
| ------------------------------------------ | -------------------------------------------------------------------------------------------------------------- |
| Extracts and merges filterable attributes. | Keep the number of [**filterable attributes**](/reference/api/settings/get-filterableattributes) to a minimum. |

### `extracting words` and `merging word caches`

| Description                                   | Optimization                                                                                                                                                      |
| --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Tokenizes text and builds the inverted index. | Ensure the [searchable attributes](/reference/api/settings/get-searchableattributes) list only includes the fields you want to be checked for query word matches. |

### `extracting word proximity` and `merging word proximity`

| Description                                              | Optimization                                                                                                                               |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Builds data structures for phrase and attribute ranking. | Lower the precision of this operation by setting [proximity precision](/reference/api/settings/update-proximityprecision) to `byAttribute` |

### `waiting for database writes`

| Description                      | Optimization                                                                                                                                       |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Time spent writing data to disk. | No direct optimization possible. Either the disk is too slow or you are writing too much data in a single operation. Avoid HDDs (Hard Disk Drives) |

### `waiting for extractors`

| Description                                  | Optimization                                                                                                                                                    |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Time spent waiting for CPU-bound extraction. | No direct optimization possible. Indicates a CPU bottleneck. Use more cores or scale horizontally with [sharding](/resources/self_hosting/deployment/overview). |

### `post processing facets > strings bulk` / `numbers bulk`

| Description                               | Optimization                                                                                                                                                                                                                                      |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Processes equality or comparison filters. | - Disable unused [**filter features**](/reference/api/settings/get-filterableattributes), such as comparison operators on string values. <br /> - Reduce the number of [**sortable attributes**](/reference/api/settings/get-sortableattributes). |

### `post processing facets > facet search`

| Description                                                                                 | Optimization                                                                                     |
| ------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ |
| Builds structures for the [facet search API](/reference/api/facet-search/search-in-facets). | If you don’t use the facet search API, [disable it](/reference/api/settings/update-facetsearch). |

### Embeddings

| Trace key                        | Description                                                           | Optimization                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| -------------------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `writing embeddings to database` | Time spent saving vector embeddings.                                  | Use embedding vectors with fewer dimensions. <br />- Consider enabling [binary quantization](/reference/api/settings/update-embedders).                                                                                                                                                                                                                                                                                                                                                               |
| `extracting embeddings`          | Time spent extracting embeddings from embedding providers' responses. | Reduce the amount of data sent to embeddings provider. <br />- [Include fewer attributes in `documentTemplate`](/capabilities/hybrid_search/advanced/document_template_best_practices). <br />- [Reduce maximum size of the document template](/reference/api/settings/update-embedders). <br />- [Disabling embedding regeneration on document update](/reference/api/documents/add-or-update-documents). <br />- If using a third-party service like OpenAI, upgrade your account to a higher tier. |

### `post processing words > word prefix *`

| Description | Optimization                                                                                                                         |                                                                                                                                                       |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
|             | Builds prefix data for autocomplete. Allows matching documents that begin with a specific query term, instead of only exact matches. | Disable [**prefix search**](/reference/api/settings/get-prefixsearch) (`prefixSearch: disabled`). *This can severely impact search result relevancy.* |

### `post processing words > word fst`

| Description                                    | Optimization                                                                                                                                                           |
| ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Builds the word FST (finite state transducer). | No direct action possible, as FST size reflect the number of different words in the database. Using documents with fewer searchable words may improve operation speed. |

## Example analysis

If you see:

<CodeGroup>
  ```json theme={null}
  "processing tasks > indexing > post processing facets > facet search": "1763.06s"
  ```
</CodeGroup>

[Facet searching](/capabilities/filtering_sorting_faceting/how_to/filter_with_facets#searching-facet-values) is taking significant indexing time. If your application doesn’t use facets, disable the feature:

<CodeGroup>
  ```bash cURL theme={null}
  curl \
    -X PUT 'MEILISEARCH_URL/indexes/INDEX_UID/settings/facet-search' \
    -H 'Content-Type: application/json' \
    --data-binary 'false'
  ```

  ```javascript JS theme={null}
  client.index('INDEX_NAME').updateFacetSearch(false);
  ```

  ```python Python theme={null}
  client.index('books').update_facet_search_settings(False)
  ```

  ```php PHP theme={null}
  $client->index('INDEX_NAME')->updateFacetSearch(false);
  ```

  ```ruby Ruby theme={null}
  client.index('INDEX_UID').update_facet_search_setting(false)
  ```

  ```go Go theme={null}
  client.Index("books").UpdateFacetSearch(false)
  ```

  ```rust Rust theme={null}
  let task: TaskInfo = client
    .index(INDEX_UID)
    .set_facet_search(false)
    .await
    .unwrap();
  ```
</CodeGroup>

## Learn more

* [Indexing best practices](/capabilities/indexing/advanced/indexing_best_practices)
* [Impact of RAM and multi-threading on indexing performance](/resources/self_hosting/performance/ram_multithreading)
* [Configuring index settings](/capabilities/indexing/overview)
