当前位置:网站首页>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 .

边栏推荐
- NET中小型企业项目开发框架系列(一个)
- Concurrency control of performance tuning methodology
- A number of ventilator giants' products have been recalled recently, and the ventilator market is still in incremental competition
- SecureCRT使用提示
- Recovery technology with checkpoints
- AD637 usage notes
- 从零开始实现lmax-Disruptor队列(四)多线程生产者MultiProducerSequencer原理解析
- Cold violence -- another perspective of objective function setting
- 1.2 download and installation of the help software rstudio
- Interview questions for basic software testing
猜你喜欢

Decorator learning 01

Lightweight dynamic monitorable thread pool based on configuration center - dynamictp

ICMP introduction

Database recovery strategy

Reptile practice

【愚公系列】2022年7月 Go教学课程 003-IDE的安装和基本使用

Overview of concurrency control

Official clarification statement of Jihu company

【愚公系列】2022年7月 Go教学课程 004-Go代码注释

华为游戏多媒体服务调用屏蔽指定玩家语音方法,返回错误码3010
随机推荐
Implementing Lmax disruptor queue from scratch (IV) principle analysis of multithreaded producer multiproducersequencer
让开发效率提升的跨端方案
Environment configuration problem record
Matlab | app designer · I used Matlab to make a real-time editor of latex formula
CRM creates its own custom report based on fetch
Codeforces 12D Ball 树形阵列模拟3排序元素
场景化面试:关于分布式锁的十问十答
The real situation of programmers
Cold violence -- another perspective of objective function setting
Recovery technology with checkpoints
Oracle检查点队列–实例崩溃恢复原理剖析
Defect detection - Halcon surface scratch detection
Deeply convinced plan X - network protocol basic DNS
AD637 usage notes
The solution to the problem that Oracle hugepages are not used, causing the server to be too laggy
Gcc9.5 offline installation
A long's perception
Huawei fast game failed to call the login interface, and returned error code -1
kingbaseES V8R3数据安全案例之---审计记录清除案例
华为游戏多媒体调用切换房间方法出现异常Internal system error. Reason:90000017