Compared to MySQL5.1 and MySQL5.5, you only need to update the index page, which is faster than before. However, when creating a clustered index (primary key) or a foreign key
Compared to the index creation speed of MySQL 5.1 and MySQL 5.5, you only need to update the index page, which is faster than before. However, when creating a clustered index (primary key) or a foreign key
In MySQL 5.1.x, the process of creating and deleting clustered indexes is as follows:
1. Create an empty table with the same structure as the original table, and then create a clustered index;
2. copy the data from the original table to the new table. An exclusive lock will be applied to the original table. Other session dml operations will be blocked to ensure data consistency;
3. After copying, delete the original table and rename the new table as the original table.
The process of creating and deleting non-clustered indexes:
1. Create an empty table with the same structure as the original table, and then create a non-clustered index;
2. copy the data from the original table to the new table. A shared lock will be applied to the original table. Other sessions cannot be updated, but data can be queried to ensure data consistency;
3. After copying, delete the original table and rename the new table as the original table.
In MySQL 5.5.x, creating and deleting non-clustered indexes does not need to be copied to the entire table ,,
You only need to update the index page, which is faster than before. However, when creating a clustered index (primary key) or a foreign key, you still need to copy the content of the entire table, because the clustered index stores the primary key and row data together, the secondary index is stored separately, and a pointer points to the primary key.
The following is a comparison of the non-clustered index creation speed:
See the MySQL5.5 manual: