search
HomeDatabaseMysql TutorialWhat is the MySQL secondary index query process?

Preface

The clustered index is the primary key-based index structure created by innodb by default, and the data in the table is directly placed in the clustered index as the data page of the leaf node:

What is the MySQL secondary index query process?

Data search based on primary key: Start a binary search from the root node of the clustered index, find the corresponding data page all the way, and directly locate the primary key target data based on the page directory.

If you want to create an index on other fields, or even create a joint index based on multiple fields, what is the index structure like at this time?

Assuming that other fields are indexed, such as name, age, etc., the same principle applies. For example, when you insert data:

  • Insert the complete data into the data page of the leaf node of the clustered index, and maintain the clustered index at the same time

  • For the indexes created for your other fields, re-create a B-tree

#For example, if you create an index based on the name field, when data is inserted, a B-tree will be re-created. , the leaf node of the B-tree is also a data page, but only the primary key field and the name field are placed in this data page:

What is the MySQL secondary index query process?

This is a name field based on the B-tree that is independent of the cluster The index structure of a cluster index, the data stored in its leaf nodes only contains the values ​​of the primary key and name fields.

The overall sorting rules are the same as the sorting rules of the clustered index according to the primary key, that is:

  • The name values ​​in the data pages of the leaf nodes are all sorted

  • The name field value in the next data page is > the name field value in the previous data page

The index B tree of the name field is also A multi-level index page will be constructed. The index page stores:

  • The page number of the next level

  • The minimum name field value, according to name Field value sorting.

So if you query data based on the name field, the process is the same. Start from the root node of the name index tree and search down layer by layer until you find the data page of the leaf node. Locate the primary key value corresponding to the name field value.

Then for statements like

select * from t where name='xx'

, first search in the name index tree based on the name value, and find the leaf node. Only the corresponding primary key value can be found, but this row of data cannot be found. all fields.

So we still need to return to the table: we need to go to the clustered index starting from the root node according to the primary key value, find the data page of the leaf node, and locate the complete data row corresponding to the primary key value. At this time Only then can all the field values ​​required by select * be taken out.

Joint index

For example, name age, the running process is the same, and an independent B tree is established. After the data page of the leaf node stores the id name age, it is sorted by name by default. For the same name, it is sorted by name. Age ranking, the same is true for the sorting of name age values ​​between different data pages.

Then the index page of the B-tree of the joint index of this name age is stored:

  • The page number of the next layer node

  • The smallest name age value

So when you search based on name age, you will go through the name age joint index tree, search for the primary key, and then go to the clustered index based on the primary key. Go search.

The above is the detailed content of What is the MySQL secondary index query process?. For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:亿速云. If there is any infringement, please contact admin@php.cn delete
Adding Users to MySQL: The Complete TutorialAdding Users to MySQL: The Complete TutorialMay 12, 2025 am 12:14 AM

Mastering the method of adding MySQL users is crucial for database administrators and developers because it ensures the security and access control of the database. 1) Create a new user using the CREATEUSER command, 2) Assign permissions through the GRANT command, 3) Use FLUSHPRIVILEGES to ensure permissions take effect, 4) Regularly audit and clean user accounts to maintain performance and security.

Mastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMastering MySQL String Data Types: VARCHAR vs. TEXT vs. CHARMay 12, 2025 am 12:12 AM

ChooseCHARforfixed-lengthdata,VARCHARforvariable-lengthdata,andTEXTforlargetextfields.1)CHARisefficientforconsistent-lengthdatalikecodes.2)VARCHARsuitsvariable-lengthdatalikenames,balancingflexibilityandperformance.3)TEXTisidealforlargetextslikeartic

MySQL: String Data Types and Indexing: Best PracticesMySQL: String Data Types and Indexing: Best PracticesMay 12, 2025 am 12:11 AM

Best practices for handling string data types and indexes in MySQL include: 1) Selecting the appropriate string type, such as CHAR for fixed length, VARCHAR for variable length, and TEXT for large text; 2) Be cautious in indexing, avoid over-indexing, and create indexes for common queries; 3) Use prefix indexes and full-text indexes to optimize long string searches; 4) Regularly monitor and optimize indexes to keep indexes small and efficient. Through these methods, we can balance read and write performance and improve database efficiency.

MySQL: How to Add a User RemotelyMySQL: How to Add a User RemotelyMay 12, 2025 am 12:10 AM

ToaddauserremotelytoMySQL,followthesesteps:1)ConnecttoMySQLasroot,2)Createanewuserwithremoteaccess,3)Grantnecessaryprivileges,and4)Flushprivileges.BecautiousofsecurityrisksbylimitingprivilegesandaccesstospecificIPs,ensuringstrongpasswords,andmonitori

The Ultimate Guide to MySQL String Data Types: Efficient Data StorageThe Ultimate Guide to MySQL String Data Types: Efficient Data StorageMay 12, 2025 am 12:05 AM

TostorestringsefficientlyinMySQL,choosetherightdatatypebasedonyourneeds:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseTEXTforlong-formtextcontent.4)UseBLOBforbinarydatalikeimages.Considerstorageov

MySQL BLOB vs. TEXT: Choosing the Right Data Type for Large ObjectsMySQL BLOB vs. TEXT: Choosing the Right Data Type for Large ObjectsMay 11, 2025 am 12:13 AM

When selecting MySQL's BLOB and TEXT data types, BLOB is suitable for storing binary data, and TEXT is suitable for storing text data. 1) BLOB is suitable for binary data such as pictures and audio, 2) TEXT is suitable for text data such as articles and comments. When choosing, data properties and performance optimization must be considered.

MySQL: Should I use root user for my product?MySQL: Should I use root user for my product?May 11, 2025 am 12:11 AM

No,youshouldnotusetherootuserinMySQLforyourproduct.Instead,createspecificuserswithlimitedprivilegestoenhancesecurityandperformance:1)Createanewuserwithastrongpassword,2)Grantonlynecessarypermissionstothisuser,3)Regularlyreviewandupdateuserpermissions

MySQL String Data Types Explained: Choosing the Right Type for Your DataMySQL String Data Types Explained: Choosing the Right Type for Your DataMay 11, 2025 am 12:10 AM

MySQLstringdatatypesshouldbechosenbasedondatacharacteristicsandusecases:1)UseCHARforfixed-lengthstringslikecountrycodes.2)UseVARCHARforvariable-lengthstringslikenames.3)UseBINARYorVARBINARYforbinarydatalikecryptographickeys.4)UseBLOBorTEXTforlargeuns

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools