SQL CREATE INDEX


SQL CREATE INDEX Statement

The SQL CREATE INDEX statement is used to create an index on a table. This command is essential for improving the speed and efficiency of data retrieval operations by allowing the database to find rows more quickly.


Syntax

-- To create an index on a table
CREATE INDEX index_name
ON table_name (column1, column2, ...);

-- To create a unique index on a table
CREATE UNIQUE INDEX index_name
ON table_name (column1, column2, ...);
  • CREATE INDEX index_name: This is the SQL syntax used to create a non-unique index.
  • CREATE UNIQUE INDEX index_name: This is the SQL syntax used to create a unique index, ensuring all values in the indexed columns are unique.
  • ON table_name: This specifies the name of the table on which the index is created.
  • column1, column2, ...: These specify the names of the columns to include in the index.

Example

Let's go through a complete example that includes creating a database, creating a table, inserting data into the table, and then creating an index on the table.

Step 1: Creating a Database

This step involves creating a new database named example_db.

CREATE DATABASE example_db;

In this example, we create a database named example_db.

Step 2: Creating a Table

In this step, we create a table named employees within the previously created database.

USE example_db;

CREATE TABLE employees (
    id INT AUTO_INCREMENT PRIMARY KEY,
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    email VARCHAR(100),
    hire_date DATE
);

Here, we define the employees table with columns for id, first_name, last_name, email, and hire_date. The id column is set as the primary key and will auto-increment.

Step 3: Inserting Data into the Table

This step involves inserting some sample data into the employees table.

INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('John', 'Doe', 'john.doe@example.com', '2023-01-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Jane', 'Smith', 'jane.smith@example.com', '2023-02-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Alice', 'Johnson', 'alice.johnson@example.com', '2023-03-01');
INSERT INTO employees (first_name, last_name, email, hire_date) VALUES ('Bob', 'Brown', 'bob.brown@example.com', '2023-04-01');

Here, we insert four rows of data into the employees table.

Step 4: Creating an Index

This step involves creating an index on the last_name column of the employees table to improve the speed of queries that filter by last name.

CREATE INDEX idx_last_name
ON employees (last_name);

This command creates an index named idx_last_name on the last_name column of the employees table.

Step 5: Creating a Unique Index

This step involves creating a unique index on the email column of the employees table to ensure all email addresses are unique.

CREATE UNIQUE INDEX idx_email
ON employees (email);

This command creates a unique index named idx_email on the email column of the employees table, ensuring that all email addresses are unique.