Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 352009
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 12, 20262026-05-12T11:41:49+00:00 2026-05-12T11:41:49+00:00

I know how to use INDEX as in the following code. And I know

  • 0

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, 
    date_completed timestamp        NULL, 

    PRIMARY KEY ( task_id ), 
    INDEX parent ( parent_id )
)

However I found a code using KEY instead of INDEX as following.

CREATE TABLE orders (
    
    order_id        int unsigned NOT NULL AUTO_INCREMENT,
    -- etc 

    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 ).

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-12T11:41:50+00:00Added an answer on May 12, 2026 at 11:41 am

    There’s no difference. They are synonyms, though INDEX should be preferred (as INDEX is ISO SQL compliant, while KEY is a MySQL-specific, non-portable, extension).

    From the 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.


    By "The key attribute PRIMARY KEY can also be specified as just KEY when given in a column definition.", it means that these three CREATE TABLE statements below are equivalent and generate identical TABLE objects in the database:

    CREATE TABLE orders1 (
        order_id int PRIMARY KEY
    );
    
    CREATE TABLE orders2 (
        order_id int KEY
    );
    
    CREATE TABLE orders3 (
        order_id int NOT NULL,
    
        PRIMARY KEY ( order_id )
    );
    

    …while these 2 statements below (for orders4, orders5) are equivalent with each other, but not with the 3 statements above, as here KEY and INDEX are synonyms for INDEX, not a PRIMARY KEY:

    CREATE TABLE orders4 (
        order_id int NOT NULL,
    
        KEY ( order_id )
    );
    
    CREATE TABLE orders5 (
        order_id int NOT NULL,
    
        INDEX ( order_id )
    );
    

    …as the KEY ( order_id ) and INDEX ( order_id ) members do not define a PRIMARY KEY, they only define a generic INDEX object, which is nothing like a KEY at all (as it does not uniquely identify a row).

    As can be seen by running SHOW CREATE TABLE orders1...5:

    Table SHOW CREATE TABLE...
    orders1 CREATE TABLE orders1 (
    order_id int NOT NULL,
    PRIMARY KEY ( order_id )
    )
    orders2 CREATE TABLE orders2 (
    order_id int NOT NULL,
    PRIMARY KEY ( order_id )
    )
    orders3 CREATE TABLE orders3 (
    order_id int NOT NULL,
    PRIMARY KEY ( order_id )
    )
    orders4 CREATE TABLE orders4 (
    order_id int NOT NULL,
    KEY ( order_id )
    )
    orders5 CREATE TABLE orders5 (
    order_id int NOT NULL,
    KEY ( order_id )
    )
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I know how to use tags in subversion. I create a tag every time
I know how to use JSON to create objects, but there doesn't seem to
I know how to use Perl's Getopt::Long, but I'm not sure how I can
I know the use of server-side controls is a no-no in ASP.NET MVC, however
I know you can use C++ keyword 'explicit' for constructors of classes to prevent
I know you cannot use a alias column in the where clause for T-SQL;
I know how to use the OleDbConnection class to open an excel file and
I know you can use the <jsp:useBean> tag to instantiate objects within JSPs without
I know how I use these terms, but I'm wondering if there are accepted
We all know how to use <ctrl>-R to reverse search through history, but did

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.