当前位置:网站首页>Talking about MySQL index
Talking about MySQL index
2022-07-05 22:00:00 【The sea of waves】
List of articles
- Talking about MYSQL Index performance
- The essence of index
- myIsam Storage engine index
- innodb Storage engine index
- ( Interview questions ) Why suggest Innob A table must have a primary key , And it is recommended to use the auto increasing primary key of integer type
- ( Interview questions ) Compared with storing row pointers in leaf nodes , The secondary index will take up more space to store the primary key value , Then why do we design it like this ?
- ( Interview questions ) that InnoDB With clustering index , Why should there be a secondary index ?
- mysql Explanation of the leftmost prefix optimization principle
Talking about MYSQL Index performance
The essence of index
Index is help MYSQL A well ordered data structure for efficient data acquisition .

Index data structure
- Binary tree It will become a linear linked list , Low efficiency
- Red and black trees When there is a large amount of data ,IO Low disk efficiency
- hash surface
- Evaluation of index key Do it once. hash Calculation can locate the location of data storage
- A lot of time Hash Index is better than B+ Tree indexing is more efficient
- Can only satisfy “=”,“IN”, Range query is not supported
- hash The question of conflict

B-tree
Leaf nodes have the same depth , The pointer to the leaf node is null
All index elements are not duplicate
The data indexes in the node are incrementally arranged from left to right

B+tree
- Non leaf nodes do not store data, Store index only , More indexes can be placed
- The leaf node contains all index fields
- The leaf node is connected with a pointer , Improve the performance of interval access , Support range lookup (20<col<50)
- The height is about 3 To 4, Leaf nodes can store 2kw An index

lookup 30 The process of this element , First load the root node into memory , According to the idea of binary search, we can find 15~56 The index of this piece
Then according to the idea of binary search Find the 20~49 This index , Finally find 30 This element .
myIsam Storage engine index

The data in the table is stored on disk . Each row of data has a disk file address
All elements in the table are stored in files .

frm file : Definition and structure of table
MYD file : Table all data
MYI file : Table all indexes
innodb Storage engine index


frm file : Definition and structure of table
ibd file : Table data and index , Disk read ahead , The data near the searched records will be queried .
Clustered index : The leaf node contains the index and other data fields of the row
Nonclustered indexes : Search across multiple files according to the index , such as myIsam In the storage engine , Need from MYI File to MYD file Find data in ( Also called return table )
Secondary index : The leaf node stores the primary key value , Every time you look up data , Find the primary key value in the leaf node according to the index , According to the primary key value, we can get a complete row of records in the cluster index
Joint index : Union index is also called compound index . For composite indexes :Mysql Use the fields in the index from left to right , A query can use only a part of the index , But only the far left part . For example, the index is key index (a,b,c). Can support a | a,b| a,b,c 3 Combination of search , But does not support b,c Search for . When the leftmost field is a constant reference , The index is very efficient .
( Interview questions ) Why suggest Innob A table must have a primary key , And it is recommended to use the auto increasing primary key of integer type
If not built , The database will automatically find a column of unique data as the primary key index , If no unique data is found , Will build a fake hidden column , This will cause mysql Resources are tight , Bring a great burden .
Integer index and string or UUID Compared with , More efficient , Take up less space .
Auto increment :UUID Not auto increment , There may be node splitting , It is efficient to build nodes without self increment .
( Interview questions ) Compared with storing row pointers in leaf nodes , The secondary index will take up more space to store the primary key value , Then why do we design it like this ?
InnoDB When moving rows , There is no need to maintain a secondary index , Because the leaf node stores the primary key value , Instead of Pointers .
( Interview questions ) that InnoDB With clustering index , Why should there be a secondary index ?
The leaf node of the cluster index stores a row of complete data , The secondary index only stores the primary key value , Compared with clustered index , Take up less space . When we need to build multiple indexes for a table , If they are clustered indexes , That will take up a lot of memory space , therefore InnoDB The primary key in is a clustered index , And the only index 、 General index 、 Prefix indexes are secondary indexes .

mysql Explanation of the leftmost prefix optimization principle

Skip in composite index name after ,age Is chaotic , So a full scan will be performed .
The list of articles to be completed later
- Business
- MVCC
- lock
- Sub database and sub table
There is something wrong , Welcome to the discussion .
Last , Welcome to pay attention to my wechat , What do you like , Collection , Forwarding is my greatest encouragement .

边栏推荐
- SQL knowledge leak detection
- [Yugong series] go teaching course 003-ide installation and basic use in July 2022
- How to organize an actual attack and defense drill
- Kingbasees v8r3 cluster maintenance case -- online addition of standby database management node
- Hysbz 2243 staining (tree chain splitting)
- KingbaseES V8R3集群维护案例之---在线添加备库管理节点
- Efficiency difference between row first and column first traversal of mat data types in opencv
- R language learning notes
- NET中小型企业项目开发框架系列(一个)
- About the writing method of SQL field "this includes" and "included in" strings
猜你喜欢

database mirroring

Kingbasees v8r3 cluster maintenance case -- online addition of standby database management node

"Chris Richardson microservices series" uses API gateway to build microservices

极狐公司官方澄清声明

Cold violence -- another perspective of objective function setting

装饰器学习01

K210学习笔记(四) K210同时运行多个模型

Reptile practice
![[Yugong series] go teaching course in July 2022 004 go code Notes](/img/56/d596e7c7bec9abd888e8f18f9769f8.png)
[Yugong series] go teaching course in July 2022 004 go code Notes

Yolov5 training custom data set (pycharm ultra detailed version)
随机推荐
The Blue Bridge Cup web application development simulation competition is open for the first time! Contestants fast forward!
EL与JSTL注意事项汇总
Did you brush the real title of the blue bridge cup over the years? Come here and teach you to counter attack!
Reptile practice
AD637 usage notes
【愚公系列】2022年7月 Go教学课程 004-Go代码注释
Kingbasees v8r3 data security case - audit record clearing case
Four components of logger
Tips for using SecureCRT
1.2 download and installation of the help software rstudio
"Chris Richardson microservices series" uses API gateway to build microservices
怎么利用Tensorflow2进行猫狗分类识别
Oracle检查点队列–实例崩溃恢复原理剖析
Overview of database recovery
Dbeaver executes multiple insert into error processing at the same time
Scenario interview: ten questions and ten answers about distributed locks
2.2.3 output of documents
How to organize an actual attack and defense drill
Poj3414广泛搜索
[Yugong series] go teaching course in July 2022 004 go code Notes