CREATE INDEX Statement •The index type for a non- SPATIAL  index depends on the storage engine. Currently  B-tree is used. •Permitted for a column that can have  NULL  values only for  InnoDB    MyISAM   and  MEMORY  tables. • KEY_BLOCK_SIZE [=]  value • index_type Index Options Following the key part list  index options can be given. An  index_option  value can be any of the following: KEY_BLOCK_SIZE  is not supported at the index level for  InnoDB  tables. See Section 13.1.20  “CREATE TABLE Statement” . Some storage engines permit you to specify an index type when creating an index. For example: CREATE TABLE lookup (id INT) ENGINE = MEMORY; CREATE INDEX id_index ON lookup (id) USING BTREE; Table 13.1  “Index Types Per Storage Engine”  shows the permissible index type values supported by different storage engines. Where multiple index types are listed  the first one is the default when no index type specifier is given. Storage engines not listed in the table do not support an  index_type  clause in index definitions. The  index_type  clause cannot be used for  FULLTEXT INDEX  or (prior to MySQL 8.0.12)  SPATIAL INDEX  specifications. Full-text index implementation is storage engine dependent. Spatial indexes are implemented as R-tree indexes. BTREE  indexes are implemented by the  NDB  storage engine as T-tree indexes. For indexes on  NDB  table columns  the  USING  option can be specified only for a unique index or primary key.  USING HASH  prevents the creation of an ordered index; otherwise  creating a unique index or primary key on an  NDB  table automatically results in the creation of both an ordered index and a hash index  each of which indexes the same set of columns. 2525 Note Storage Engine Permissible Index Types InnoDB BTREE MyISAM BTREE MEMORY / HEAP HASH    BTREE NDB HASH    BTREE  (see note in text) Table 13.1 Index Types Per Storage Engine For  MyISAM  tables   KEY_BLOCK_SIZE  optionally specifies the size in bytes to use for index key blocks. The value is treated as a hint; a different size could be used if necessary. A  KEY_BLOCK_SIZE  value specified for an individual index definition overrides a table-level  KEY_BLOCK_SIZE  value. If you specify an index type that is not valid for a given storage engine  but another index type is available that the engine can use without affecting query results  the engine uses the available type. The parser recognizes  RTREE  as a type name. As of MySQL 8.0.12  this is permitted only for  SPATIAL indexes. Prior to 8.0.12   RTREE  cannot be specified for any storage engine.