> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/server/reference/sql-structure/nosql/handler/handler-for-memory-tables.md).

# HANDLER for MEMORY Tables

This article explains how to use [HANDLER commands](/docs/server/reference/sql-structure/nosql/handler/handler-commands.md) efficiently with [MEMORY/HEAP](/docs/server/server-usage/storage-engines/memory-storage-engine.md) tables.

If you want to scan a table for different key values, not just search for exact key values, you should create your keys with `USING BTREE`:

```sql
CREATE TABLE t1 (a INT, b INT, KEY(a), KEY b USING BTREE (b)) ENGINE=memory;
```

In the above table, `a` is a [HASH](/docs/server/ha-and-performance/optimization-and-tuning/optimization-and-indexes/storage-engine-index-types.md#hash-indexes) key that only supports exact matches (=) while `b` is a [BTREE](/docs/server/ha-and-performance/optimization-and-tuning/optimization-and-indexes/storage-engine-index-types.md#b-tree-indexes) key that you can use to scan the table in key order, starting from start or from a given key value.

The limitations for `HANDLER READ` with `MEMORY|HEAP` tables are:

## Limitations for HASH keys

* You must use all key parts when searching for a row.
* You can't do a key scan of all values. You can only find all rows with the same key value.
* `READ NEXT` gives an [error 1031](/docs/server/reference/error-codes/mariadb-error-codes-1000-to-1099/e1031.md) if the tables changed since last read.

## Limitations for BTREE keys

* `READ NEXT` gives an error 1031 if the tables changed since last read. This limitation can be lifted in the future.

## Limitations for table scans

* `READ NEXT` gives an error 1031 if the table was truncated since last `READ` call.

## See also

See also the limitations listed in [HANDLER commands](/docs/server/reference/sql-structure/nosql/handler/handler-commands.md).

<sub>*This page is licensed: CC BY-SA / Gnu FDL*</sub>

{% @marketo/form formId="4316" %}
