Descending Indexes CREATE TABLE t2 ( i INT NOT NULL, j INT NOT NULL, UNIQUE j_idx (j) ) ENGINE = InnoDB; The definition includes no explicit primary key, but the index on  NOT NULL  column  j  places the same constraint on rows as a primary key and cannot be made invisible: mysql>  ALTER TABLE t2 ALTER INDEX j_idx INVISIBLE; ERROR 3522 (HY000): A primary key index cannot be invisible. Now suppose that an explicit primary key is added to the table: ALTER TABLE t2 ADD PRIMARY KEY (i); The explicit primary key cannot be made invisible. In addition, the unique index on  j  no longer acts as an implicit primary key and as a result can be made invisible: mysql>  ALTER TABLE t2 ALTER INDEX j_idx INVISIBLE; Query OK, 0 rows affected (0.03 sec) MySQL supports descending indexes:  DESC  in an index definition is no longer ignored but causes storage of key values in descending order. Previously, indexes could be scanned in reverse order but at a performance penalty. A descending index can be scanned in forward order, which is more efficient. Descending indexes also make it possible for the optimizer to use multiple-column indexes when the most efficient scan order mixes ascending order for some columns and descending order for others. Consider the following table definition, which contains two columns and four two-column index definitions for the various combinations of ascending and descending indexes on the columns: 8.3.13 Descending Indexes CREATE TABLE t ( c1 INT, c2 INT, INDEX idx1 (c1 ASC, c2 ASC), INDEX idx2 (c1 ASC, c2 DESC), INDEX idx3 (c1 DESC, c2 ASC), INDEX idx4 (c1 DESC, c2 DESC) ); The table definition results in four distinct indexes. The optimizer can perform a forward index scan for each of the  ORDER BY  clauses and need not use a  filesort  operation: ORDER BY c1 ASC, c2 ASC -- optimizer can use idx1 ORDER BY c1 DESC, c2 DESC -- optimizer can use idx4 ORDER BY c1 ASC, c2 DESC -- optimizer can use idx2 ORDER BY c1 DESC, c2 ASC -- optimizer can use idx3 Use of descending indexes is subject to these conditions: •Descending indexes are supported only for the  InnoDB  storage engine, with these limitations: •Change buffering is not supported for a secondary index if the index contains a descending index key column or if the primary key includes a descending index column. •The  InnoDB  SQL parser does not use descending indexes. For  InnoDB  full-text search, this means that the index required on the  FTS_DOC_ID  column of the indexed table cannot be defined as a descending index. For more information, see Section 15.6.2.4, “InnoDB Full-Text Indexes” . •Descending indexes are supported for all data types for which ascending indexes are available. 1729