MySQL 8.0中跳过扫描成功触发方法

  

本文主要给大家简单讲讲MySQL 8.0中跳过扫描成功触发方法,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL 8.0中跳过扫描成功触发方法这篇文章可以给大家带来一些实际帮助。

先来个示例:

 mysql>, CREATE  TABLE  t1  (f1  INT  NOT 空,,f2  INT  NOT 空,,PRIMARY 关键(f1, f2));
  mysql>, INSERT  INTO  t1 价值
  ,,,,,,,(1,1),(1、2),(3),(4),(1、5),
  ,,,,,,,(2,1),(2,2),(2、3),(2、4),(5);
  mysql>, INSERT  INTO  t1  SELECT  f1, f2  +, 5,得到t1;
  mysql>, INSERT  INTO  t1  SELECT  f1, f2  +, 10,得到t1;
  mysql>, INSERT  INTO  t1  SELECT  f1, f2  +, 20,得到t1;
  mysql>, INSERT  INTO  t1  SELECT  f1, f2  +, 40,得到t1;
  
  mysql>, desc  SELECT  f1, f2 得到t1  WHERE  f2 祝辞,40;
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | |,id  select_type  |, table  |, partitions  |, type , |, possible_keys  |, key ,,,, |, key_len  |, ref , |, rows  |, filtered  |, Extra ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, |
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  |,,1,|,SIMPLE ,,,,, |, t1 ,,, |, NULL ,,,,,, |, range  |, PRIMARY ,,,,,, |, PRIMARY  |, 8,,,,,,, |, NULL  |,,, 53, |,,, 100.00, |, Using 在那里,,Using  index  for  skip  scan  |
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1,row 集,拷贝,1,warning  (0.00, sec) 

上述跳过扫描过程:

(1)获得第一个不同值的第一个关键部分(f1=1)。

(2)构造范围基于第一和第二关键部件(f1=1和f2比;40)。

(3)执行范围扫描。

(4)得到下一个不同的值的第一个关键部分(f1=2)。

(5)构造范围基于第一和第二关键部件(f1=2和f2比;40)。

(6)执行范围扫描。


跳过扫描触发条件

(1)必须是联合索引

(2)只能是一个表

(3)不能使用不同或group by;

(4) SQL不能回表,即选择列和那里的条件列都要包含在一个索引中

(5)默认optimizer_switch=& # 39; skip_scan=在# 39;开启;

 mysql>, desc  SELECT  distinct  f1, f2 得到t1  WHERE  f2 祝辞,40;
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  | |,id  select_type  |, table  |, partitions  |, type , |, possible_keys  |, key ,,,, |, key_len  |, ref , |, rows  |, filtered  |, Extra ,,,,,,,,,,,,,,,,,, |
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  |,,1,|,SIMPLE ,,,,, |, t1 ,,, |, NULL ,,,,,, |, index  |, PRIMARY ,,,,,, |, PRIMARY  |, 8,,,,,,, |, NULL  |,, 160, |,,,, 33.33, |, Using 在那里,Using  index  |
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  1,row 集,拷贝,1,warning (0.00,秒)
  
  mysql>, desc  SELECT /* +, set_var (optimizer_switch=& # 39; skip_scan=从# 39;),*/,f1, f2 得到t1  WHERE  f2 祝辞,40;
  + - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

MySQL 8.0中跳过扫描成功触发方法