EDUCBA

EDUCBA

MENUMENU
  • Free Tutorials
  • Free Courses
  • Certification Courses
  • 360+ Courses All in One Bundle
  • Login
Home Data Science Data Science Tutorials MySQL Tutorial MySQL Index Types
Secondary Sidebar
MySQL Tutorial
  • Queries
    • MySQL Queries
    • MySQL Query Commands
    • SELECT in MySQL
    • MySQL INSERT IGNORE
    • MySQL having
    • ORDER BY in MySQL
    • MySQL Cheat Sheet
    • MySQL ORDER BY Random
    • MySQL ORDER BY DESC
    • MySQL GROUP BY
    • MySQL GROUP BY Count
    • MySQL GROUP BY month
    • MySQL WHERE Clause
    • MySQL WITH
    • MySQL FETCH
    • MySQL DDL
    • MySQL DML
    • MySQL WHERE IN Array
    • MySQL Fetch Array
    • MySQL ISNULL
    • MySQL Index Types
    • Mysql? Export Schema
    • Amazon RDS for MySQL
    • MySQL greatest
  • Basic
    • MySQL floor
    • MySQL DESCRIBE table
    • MySQL encryption
    • Introduction to MySQL
    • Is SQL Server a Database?
    • What is MySQL
    • Is MySQL Programming Language
    • MySQL Server
    • MySQL AB
    • MySQL Community Server
    • How To Install MySQL
    • MySQL Versions
    • MySQL OpenSource
    • MySQL GUI Tools
    • MySQL Grant
    • MySQL Error 1064
    • MySQL Drop Database
    • MySQL not equal
    • MySQL SELECT INTO Variable
    • MySQL Commands
    • MySQL Operators
    • What is MySQL Schema
    • Wildcards in MySQL
    • MySQL Constraints
    • MySQL Administration
    • MySQL Data Type
    • MYSQL COMMIT
    • MySQL FORMAT
    • Timestamp to Date in MySQL
    • MySQL DATEDIFF
    • MySQL?Incremental Backup
    • MySQL JSON Data Type
    • MySQL ENUM
    • MySQL Default Port
    • Cheat Sheet MySQL
  • Database
    • What is Data Modeling
    • What is Data Processing
    • DBMS Architecture
    • DBMS Keys
    • Careers in Database Administration
    • What is MySQL Database
    • MySQL Relational Database
    • How to Connect Database to MySQL
    • MySQL Database Repair
    • RDBMS Interview Questions
    • DBMS Interview Questions
  • Functions
    • MySQL Function
    • MySQL Aggregate Function
    • MySQL String functions
    • MySQL Date Functions
    • MySQL Window Functions
    • MySQL Math Functions
    • MySQL Boolean
    • Cursor in MySQL
    • Condition in MySQL
    • MySQL BETWEEN
    • Insert in MySQL
    • MySQL IFNULL()
    • MySQL TIMESTAMPDIFF()
    • MySQL COALESCE()
    • MySQL count()
    • MIN() in MySQL
    • MySQL Numeric
    • MySQL field()
    • MySQL FIND_IN_SET()
    • MySQL avg()
    • MySQL MAX() Function
    • MySQL BIN()
    • MySQL Concat
    • MySQL DECODE()
    • MySQL REGEXP_REPLACE()
    • MySQL Asynchronous
    • MySQL innodb_buffer_pool_size
    • MySQL key_buffer_size
    • MySQL TRUNCATE()
    • MySQL ROW_NUMBER()
    • NOT in MySQL
    • MySQL IN Operator
    • LIKE in MySQL
    • ANY in MySQL
    • MySQL NOT IN
    • MySQL CHECK Constraint
    • MySQL DISTINCT
    • MySQL ALL
    • MySQL Union
    • MySQL UNION ALL
    • MySQL EXISTS
    • MySQL ON DELETE CASCADE
    • MySQL REGEXP
    • MySQL Index
    • MySQL Add Index
    • MySQL REINDEX
    • MySQL UNIQUE INDEX
    • MySQL Clustered Index
    • MySQL? InnoDB Cluster
    • Table in MySQL
    • ALTER TABLE MySQL
    • MySQL Temporary Table
    • MySQL Clone Table
    • MySQL Repair Table
    • MySQL Lock Table
    • MySQL Optimize Table
    • TRUNCATE TABLE MySQL
    • MySQL Table Dump
    • MySQL Update Set
    • MySQL ALTER TABLE Add Column
    • MySQL RANK()
    • MySQL CTE
    • MySQL LAG()
    • MySQL GROUP_CONCAT()
    • MySQL EXTRACT()
    • MySQL REPLACE
    • MySQL AUTO_INCREMENT
    • MySQL SYSDATE()
    • MySQL NULLIF()
    • MySQL Substring
    • MySQL SUBSTRING_INDEX()
    • MySQL LOWERCASE
    • MySQL Row
    • MySQL NOW
    • MySQL CEIL
    • MySQL Alias
    • MySQL Trigger
    • MySQL SHOW Triggers
    • MySQL UPDATE Trigger
    • MySQL DELETE Trigger
    • MySQL AFTER UPDATE Trigger
    • MySQL Stored Procedure
    • ROLLUP in MySQL
    • MySQL? INSTR()
    • MySQL Subquery
    • MySQL Timestamp
    • MySQL? Hour()
    • MySQL MOD()
    • MySQL DATE_FORMAT()
    • ALTER Column in MySQL
    • MySQL Rename Column
    • MySQL Interval
    • MySQL CURDATE
    • MySQL BIT
    • MySQL Binlog
    • MySQL Average
    • MySQL TEXT
    • MySQL SHOW
    • MySQL Offset
    • MySQL Timezone
    • mysql_real_escape_string
    • MySQL Datetime
    • MySQL DATE_SUB()
    • MySQL FULLTEXT
    • MySQL DATE_ADD()
    • MySQL sum()
    • MySQL Merge
    • MySQL BigInt
    • MySQL ROUND
    • MySQL VARCHAR
    • MySQL Decimal
    • MySQL Limit
    • MySQL today()
    • MySQL WEEKDAY
    • MySQL Split
    • MySQL Create Function
    • MySQL BLOB
    • MySQL encode()
    • MySQL Primary Key
    • MySQL Foreign Key
    • Unique Key in MySQL
    • MySQL Drop Foreign Key
    • MySQL DROP TRIGGER
    • MYSQL Database
    • Delete Database MySQL
    • MySQL Root
    • MySQL Root Password
    • MySQL Client
    • MySQL Users
    • MySQL?User Permissions
    • MySQL add user
    • MySQL List User
    • MySQL Show Users
    • MySQL User Password
    • MySQL?Cardinality
    • MySQL Workbench
    • MySQL Backup
    • MySQL REVOKE
    • MySQL Dump
    • MySQL Cluster
    • MySQL Partitioning
    • MySQL Full Text Search
    • MySQL Admin Tool
    • MySQL Export Database
    • MySQL Export to CSV
  • Joins
    • Joins in MySQL
    • MySQL Outer Join
    • Left Outer Join in MySQL
    • MySQL Self Join
    • Natural Join in MySQL
    • MySQL DELETE JOIN
    • MySQL Update Join
    • MySQL Cross Join
  • Advanced
    • MySQL Formatter
    • MySQL TINYINT
    • MySQL Grant All Privileges
    • MySQL DROP TABLE
    • MySQL rename database
    • MySQL Flush Privileges
    • MySQL super Privilege
    • MySQL Character Set
    • MySQL Log File
    • MySQL Flush Log
    • Grant Privileges MySQL
    • MySQL WHILE LOOP
    • IF Statement in MySQL
    • MySQL CASE Statement
    • MySQL IF Function
    • MySQL IF EXISTS
    • MySQL UUID
    • Views in MySQL
    • MySQL Replication
    • MySQL Partition
    • Toad for MySQL
    • Navicat for MySQL
    • MySQL AES_Encrypt
    • MySQL Performance Tuning
    • MySQL Transaction
    • MySQL? sort_buffer_size
    • MySQL? Sync
    • MySQL? Query Cache
    • MySQL Collation
    • MySQL ODBC Driver
    • MySQL Partitioning
    • MySQL InnoDB
    • MySQL Float vs Decimal
    • MySQL Union vs Union All
  • Interview Questions
    • MySQL Interview Questions

Related Courses

MS SQL Certification Courses

Oracle Certification Courses

PL/SQL Certification Courses

MySQL Index Types

MySQL Index Types

Introduction to MySQL Index Types

The following article provides an outline for MySQL index types. MySQL Index is a type of database structure which is responsible to progress the speed of table operations. In MySQL, the Indexes can be formed by using one or many columns, which provides the base for both speedy casual lookups and proficient assembling of access to records. Indexes are essentially used in the server database tables to swiftly find the table rows having specific values of the table column. If there is an absence of an index in the table, then MySQL needs to scan the entire table to locate and check the appropriate table rows.

This may cause the searching process much slower when the table is big, and data are large. Therefore, MySQL Indexes and their various types help to create, remove, search and fetch a list of records scanning the particular values available in the table data. A user cannot view the indexes as indexes are beneficial only to prompt up the SQL queries and implemented by the Database Search Engine to localize records very speedily.

Different Types of Index in MySQL

While building up an index, a user should take into deliberation which all table columns will be implemented to write SQL queries having WHERE clause swiftly and form one or multiple indexes on those table columns.

The statements such as INSERT and UPDATE consumes more time on tables with indexes. On the other hand, the statement SELECT performs faster on those tables because, during the insert or update query execution, the server also performs to insert or update related index values too. Also, optimizes query such as ORDER BY and GROUP BY with Constraints and MAX(), MIN().

Start Your Free Data Science Course

Hadoop, Data Science, Statistics & others

In MySQL, we have three different methods for creating indexes:

a. Using keyword CREATE INDEX.

CREATE INDEX Indexname ON Tablename (indexcolumn1, indexcolumn2, ….);

b. Using keyword CREATE TABLE to create a table.

CREATE TABLE Tablename (column1 CHAR (30) NOT NULL, INDEX (column2));

c. Using keyword ALTER TABLE.

ALTER TABLE Tablename ADD INDEX (column1, column2);

Now, let us see the types of MySQL Indexes where each one of all 6 types server for diverse purposes:

1. Unique

Unique is a type of MySQL Index which specifies that all values of the tables columns, when implemented, have to be distinct. There can be no duplicate values in the column which is indexed existing in a single column unique index. Whereas in a multi-column unique index, columns values can be replicated in a single table column, but the grouping of column values in every row should be unique. Hence, this Unique index is useful to avoid the duplicity of values in the columns, and generally, we define the MySQL Index after we have created the table.

Code:

CREATE UNIQUE INDEX Indexname ON Tablename(indexcolumn1, indexcolumn2,…);
OR,
CREATE TABLE Tablename(Column1 CHAR (30) NOT NULL, UNIQUE INDEX (column2));
OR,
ALTER TABLE Tablename ADD UNIQUE INDEX (column1, column2);

2. Primary Key

Primary Key is a type of Unique Index which specifies that the column mentioned as Primary key must contain no NULL value. Each table row should have a value for the table column or group of columns. Due to this, we need to normally define a primary index on the lowest number of columns as possible, and mostly, the primary key is set on a single column. Once the column values are set in, the primary key cannot be modified.

Let us view the query below to create the index – primary key:

All in One Data Science Bundle(360+ Courses, 50+ projects)
Python TutorialMachine LearningAWSArtificial Intelligence
TableauR ProgrammingPowerBIDeep Learning
Price
View Courses
360+ Online Courses | 50+ projects | 1500+ Hours | Verifiable Certificates | Lifetime Access
4.7 (86,527 ratings)

Code:

CREATE TABLE Tablename (Columnname Data_type PRIMARY KEY );
OR,
CREATE TABLE Tablename (Column1 CHAR(30) NOT NULL, Column2 CHAR(30) NOT NULL, PRIMARY KEY (Column1, Column2));
OR,
ALTER TABLE Tablename ADD PRIMARY KEY(Column1, Column2);

3. Simple | Regular | Normal

In this type of Index named as simple, regular or normal, the specified column values do not require to be unique and as well as can be NULL also. They are supplemented basically to aid the database searching process for records quicker.

Find the query code below to create the simple, regular and normal type of index:

Code:

CREATE INDEX Indexname ON Tablename  (Indexcolumn1, Indexcolumn2, …);
OR,
CREATE TABLE Tablename(Column1 CHAR(30) NOT NULL, INDEX(Column2));
OR,
ALTER TABLE Tablename ADD INDEX(Column1, Column2);

4. Full-Text

This type of index is implemented for full-text searches as the name itself implies it. Occasionally, suppose you need to find the blob of text which includes a certain word or combination of words, or it can even be a substring found within the higher block text, then this full-text index plays a vital role and, therefore, broadly implemented in search engines and e-commerce. But this indexes are maintained only for MyISAM and InnoDB tables in the database and can consist of only VARCHAR, CHAR, and TEXT table columns.

Find the query below to create a Full-text index in MySQL:

Code:

CREATE FULLTEXT INDEX Indexname ON Tablename(indexcolumn1, indexcolumn2, …);
OR,
CREATE TABLE Tablename (column1 TEXT, FULLTEXT(column1));
OR,
ALTER TABLE Tablename ADD FULLTEXT(column1, column2);

5. Spatial

The Spatial indexes are a new index type in MySQL and not broadly used. MySQL allows to create Spatial indexes on geometry-valued columns with NOT NULL constraint. The spatial index creates an R-tree index. The engine builds up a B-tree index for storage engines that maintain nonspatial indexing of the spatial table columns. This B-tree index applied on spatial values provides benefits for precise value lookups, however not for the range scans. The optimizer may apply spatial indexes stated on columns which are SRID-restricted.

Below is the code to query the Spatial Index:

Code:

CREATE INDEX Indexname ON Tablename(Indexcolumn1);
OR,
CREATE TABLE Tablename (column1 GEOMETRY NOT NULL SRID 4326,SPATIAL INDEX(Column2));
OR,
ALTER TABLE Tablename ADD SPATIAL INDEX (column1, column2);

6. Descending

This Descending index is a consistent index stored in the inverse order and is available only version 8+ of MySQL. It is supportive when a user run queries to find out the most newly added data, such as you may want to view the six newest posts or the five most current comments on all the posts. Scanning the indexes in inverse order previously have caused a performance issue. It will be more resourceful to use the descending index in onward order. This descending index also makes it likely for the optimizer to apply multiple table column indexes, and this is done when the most effectual scan order fusions ascending order for few table columns and descending order for few others.

View the following query to create Descending index:

Code:

CREATE INDEX Indexname ON Tablename (Indexcolumn1 DESC);
OR,
CREATE TABLE Tablename (Column1 INT, Column2 INT, INDEX asc_index1(Column1 ASC, Column2 ASC), INDEX desc_index1 (Column1 DESC,      Column2 DESC));
OR,
ALTER TABLE Tablename ADD INDEX(column1 DESC, column2 ASC);

Conclusion

A MySQL Index is a technique for tuning the performance for quicker retrieval of data records. In the table, an index makes an insert for every value, which displays in the indexed table column. Indexes are important for the table operations also. MySQL Indexes practically can be said to be tables that store the Index field or, Primary key and a pointer to every record rows into the authentic table.

Recommended Articles

This is a guide to MySQL Index Types. Here we discuss the introduction and different types of index in MySQL, respectively. You may also have a look at the following articles to learn more –

  1. MySQL CEIL
  2. MySQL Flush Log
  3. MySQL NOW
  4. MySQL Hour()
Popular Course in this category
MySQL Training Program (12 Courses, 10 Projects)
  12 Online Courses |  10 Hands-on Projects |  92+ Hours |  Verifiable Certificate of Completion
4.5
Price

View Course

Related Courses

MS SQL Training (16 Courses, 11+ Projects)4.9
Oracle Training (14 Courses, 8+ Projects)4.8
PL SQL Training (4 Courses, 2+ Projects)4.7
0 Shares
Share
Tweet
Share
Primary Sidebar
Footer
About Us
  • Blog
  • Who is EDUCBA?
  • Sign Up
  • Live Classes
  • Corporate Training
  • Certificate from Top Institutions
  • Contact Us
  • Verifiable Certificate
  • Reviews
  • Terms and Conditions
  • Privacy Policy
  •  
Apps
  • iPhone & iPad
  • Android
Resources
  • Free Courses
  • Database Management
  • Machine Learning
  • All Tutorials
Certification Courses
  • All Courses
  • Data Science Course - All in One Bundle
  • Machine Learning Course
  • Hadoop Certification Training
  • Cloud Computing Training Course
  • R Programming Course
  • AWS Training Course
  • SAS Training Course

ISO 10004:2018 & ISO 9001:2015 Certified

© 2022 - EDUCBA. ALL RIGHTS RESERVED. THE CERTIFICATION NAMES ARE THE TRADEMARKS OF THEIR RESPECTIVE OWNERS.

EDUCBA
Free Data Science Course

SPSS, Data visualization with Python, Matplotlib Library, Seaborn Package

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA Login

Forgot Password?

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA
Free Data Science Course

Hadoop, Data Science, Statistics & others

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

EDUCBA

*Please provide your correct email id. Login details for this Free course will be emailed to you

By signing up, you agree to our Terms of Use and Privacy Policy.

Let’s Get Started

By signing up, you agree to our Terms of Use and Privacy Policy.

This website or its third-party tools use cookies, which are necessary to its functioning and required to achieve the purposes illustrated in the cookie policy. By closing this banner, scrolling this page, clicking a link or continuing to browse otherwise, you agree to our Privacy Policy

Loading . . .
Quiz
Question:

Answer:

Quiz Result
Total QuestionsCorrect AnswersWrong AnswersPercentage

Explore 1000+ varieties of Mock tests View more