user222427
user222427

Reputation:

Mysql - Index Performances

Is there any performance issues if you create an index with multiple columns, or should you do 1 index per column?

Upvotes: 0

Views: 349

Answers (2)

Vishwanath Dalvi
Vishwanath Dalvi

Reputation: 36591

Advantages of MySQL Indexes

Generally speaking, MySQL indexing into database gives you three advantages:

Query optimization: Indexes make search queries much faster.

Uniqueness: Indexes like primary key index and unique index help to avoid duplicate row data.

Text searching: Full-text indexes in MySQL version 3.23.23, users have the opportunity to optimize searching against even large amounts of text located in any field indexed as such.

Disadvantages of MySQL indexes

When an index is created on the column(s), MySQL also creates a separate file that is sorted, and contains only the field(s) you're interested in sorting on.

Firstly, the indexes take up disk space. Usually the space usage isn’t significant, but because of creating index on every column in every possible combination, the index file would grow much more quickly than the data file. In the case when a table is of large table size, the index file could reach the operating system’s maximum file size.

Secondly, the indexes slow down the speed of writing queries, such as INSERT, UPDATE and DELETE. Because MySQL has to internally maintain the “pointers” to the inserted rows in the actual data file, so there is a performance price to pay in case of above said writing queries because every time a record is changed, the indexes must be updated. However, you may be able to write your queries in such a way that do not cause the very noticeable performance degradation.

Upvotes: 0

Alex Howansky
Alex Howansky

Reputation: 53513

There's nothing inherently wrong with a multi-column index -- it depends completely on how you're going to query the data. If you have an index on colA+colB, it will help for queries like where colA='value' and colA='value' and colB='value' but it's not going to help for queries like colB='value'.

Upvotes: 4

Related Questions