当前位置:网站首页>Summary of MySQL index failure scenarios

Summary of MySQL index failure scenarios

2022-07-06 08:17:00 Big fish eating cats


Preface

mysql The tuning aspects of include Table structure optimization 、 Index optimization 、sql Statements to optimize 、 Multiple dimensions such as table and database optimization , This article mainly summarizes the scenarios and causes of index failure .


Blogging is to sort out your knowledge , At present, it is written for yourself , It's my homework after study , Also to form a good habit .

One 、 Does not satisfy the leftmost matching principle

 First review the leftmost matching principle :
	1.  Create a federated index  index(a,b,c)  Relative to creating  idx_a(a)idx_a_b(a,b)idx_a_b_c(a,b,c) 3 An index .
	-------------------------------------------------------
	select * from table where a='a' and c='c';
	 This kind of city will go  idx_a Indexes , and   Field  c The index will not go .
	-------------------------------------------------------
	select * from table where b='b' and c='c';
	 This kind can scan the whole table ,index Index failure .
	-------------------------------------------------------

	2.  The index of the field will be invalidated after the joint index encounters the range query .
	-------------------------------------------------------
	select * from table where a like 'a%' and b='b';
	 This kind can go idx_a Index range retrieval , Field b Don't go by index .
	-------------------------------------------------------

Two 、 Frequent table return

	 Let's first analyze the following sql stay mysql Next is how to implement :
	select * from table where age > 20 ; -- among   Field age  Create index  
	 Will be in the index first age Field b+tree I found the information about the qualified id, Then, on the cluster index, pass id Return to the table to query the complete data .
	 be select *  There must be a table returning operation , When the result of the query is more than half of the total and the total is large , At this time, the cost of returning to the table is greater than that of full table scanning , be mysql The optimizer will perform a full table scan , That is, the index is invalid .

3、 ... and 、 There are calculations on the index column

	 give an example :select * from t_user where age+1=10;
	 This kind of index will fail directly .

Four 、 There is a function on the index column

	 give an example :select * from user where SUBSTR(height,1,2)=17;
	 This kind of index will fail directly .

5、 ... and 、 Field types are different

	 give an example :select * from user where type = '5';
	type It's an integer type , Query with string ,mysql Can do implicit conversion , The index will fail directly .
	-------------------------------------------------------
	 give an example :select oi.*,ui.name from order_info oi left join user_info ui on oi.user_id = ui.id;
	 among order_info Of user_id It's a string type ,user_info Of id It's an integer type , Even if order_info Of user_id Creating an index also makes implicit conversion due to different field types , The index will fail .

6、 ... and 、 Column comparison

	 give an example :select * from user where id=height;
	 The column comparison index will fail directly .

7、 ... and 、 Common index failures

	 Such as index column   Used  not in、 like ‘%x’ 、or  All indexes fail 
原网站

版权声明
本文为[Big fish eating cats]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/02/202202131832535068.html