The Question :
200 people think this question is useful
I know how to use INDEX as in the following code. And I know how to use foreign key and primary key.
CREATE TABLE tasks (
task_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
parent_id INT UNSIGNED NOT NULL DEFAULT 0,
task VARCHAR(100) NOT NULL,
date_added TIMESTAMP NOT NULL,
PRIMARY KEY (task_id),
INDEX parent (parent_id),
However I found a code using KEY instead of INDEX as following.
KEY order_date (order_date)
I could not find any explanation on the official MySQL page. Could anyone tell me what is the differences between KEY and INDEX?
The only difference I see is that when I use
KEY ..., I need to repeat the word, e.g.
KEY order_date (order_date).
The Question Comments :
The Answer 1
278 people think this answer is useful
There’s no difference. They are synonyms.
CREATE TABLE manual entry:
KEY is normally a synonym for
INDEX. The key attribute
PRIMARY KEY can
also be specified as just
KEY when given in a column definition. This was
implemented for compatibility with other database systems.
The Answer 2
13 people think this answer is useful
Here is a nice description about the “difference”:
“MySQL requires every Key also be indexed, that’s an implementation
detail specific to MySQL to improve performance.”
The Answer 3
5 people think this answer is useful
It is mentioned as a synonym for
INDEX in the ‘create table’ docs:
MySQL 5.5 Reference Manual :: 13 SQL Statement Syntax :: 13.1 Data Definition Statements :: 13.1.17 CREATE TABLE Syntax
Nos already cited the section and linked the help for 5.1.
PRIMARY KEY creates a primary key and an index for you,
KEY creates an index only.
The Answer 4
4 people think this answer is useful
Keys are special fields that play very specific roles within a table, and the type of key determines its purpose within the table.
An index is a structure that RDBMS(database management system) provides to improve data processing. An index has nothing to do with a logical database structure.
Keys are logical structures you use to identify records within a table and indexes are physical structures you use to optimize data processing.
Source: Database Design for Mere Mortals
Author: Michael Hernandez
The Answer 5
-1 people think this answer is useful
A key is a set of columns or expressions on which we build an index.
While an index is a structure that is stored in database, keys are strictly a logical concept.
Index help us in fast accessing a record, whereas keys just identify the records uniquely.
Every table will necessarily have a key, but having an index is not mandatory.
Check on https://docs.oracle.com/cd/E11882_01/server.112/e40540/indexiot.htm#CNCPT721