Accelerate the optimization of MySQL index analysis for PHP dynamic websites. This article describes how to accelerate MySQL index analysis and optimization for dynamic websites. 1. what is an index? Indexes are used to quickly search for records with specific values. This document describes how to accelerate MySQL index analysis and optimization for dynamic websites.
1. what is an index?
Indexes are used to quickly search for records with specific values. all MySQL indexes are saved as B-trees. If no index exists, MySQL must scan all the records of the entire table from the first record until the required records are found. The more records in the table, the higher the operation cost. If an index has been created on the column used as a search condition, MySQL can quickly obtain the location of the target record without scanning any records. If the table has 1000 records, the index search records should be at least 100 times faster than the sequential scan records.
Suppose we have created a table named "people:
Create table people (peopleid smallint not null,
Name CHAR (50) not null );
Then, we randomly insert 1000 different name values into the people table. There is no clear order for the name column in the data file. If we create an index for the name column, MySQL will sort the name column in the index. for each item in the index, mySQL internally stores the "pointer" of the location where the actual record in a data file is located ". Therefore, if we want to find the peopleid of the record whose name is equal to "Mike" (the SQL command is "SELECT peopleid FROM people WHERE name = 'Mike ';"), mySQL can search for the "Mike" value in the name index, and then directly go to the corresponding row in the data file to return the peopleid (999) of the row accurately ). In this process, MySQL only needs to process one row to return results. If there is no index for the "name" column, MySQL will scan all records in the data file, that is, 1000 records! Obviously, the less records that need to be processed by MySQL, the faster it can complete the task.
II. index types
MySQL provides multiple index types:
Common index:
This is the most basic index type, and it has no limitations such as uniqueness. Common indexes can be created in the following ways:
CREATE an INDEX, for example, CREATE INDEX <索引的名字> ON tablename (column list );
Modify a TABLE, such as alter table tablename add index [INDEX name] (column list );
Specify an INDEX when creating a TABLE, for example, create table tablename ([...], INDEX [INDEX name] (column list ));
Unique index:
This index is basically the same as the previous "normal index", but there is a difference: all values of the index column can only appear once, that is, they must be unique. You can create a unique index in the following ways:
CREATE an INDEX, for example, CREATE UNIQUE INDEX <索引的名字> ON tablename (column list );
Modify a TABLE, such as alter table tablename add unique [index name] (column list );
Specify an index when creating a TABLE, for example, create table tablename ([...], UNIQUE [index name] (column list ));
Primary key:
A primary key is a unique index, but it must be specified as a "primary key ". If you have used columns of the AUTO_INCREMENT type, you may already be familiar with primary keys and other concepts. The primary key is generally specified during TABLE creation, for example, "create table tablename ([...], primary key (column list ));". However, we can also ADD a primary key by modifying the TABLE, for example, "alter table tablename add primary key (column list );". Each table can have only one primary key.
Full text index:
MySQL supports full-text indexing and full-text retrieval from version 3.23.23. In MySQL, the full-text index type is FULLTEXT. Full-TEXT indexes can be created on VARCHAR or TEXT columns. It can be created using the create table command or the alter table or create index command. For large-scale datasets, using the alter table (or create index) command to CREATE a full-text INDEX is faster than inserting a record into an empty TABLE with a full-text INDEX.
Bytes. 1. what is an index? Indexes are used to quickly search for records with specific values. all MySQL indexes are...