数据库-联合索引

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/dxh0823/article/details/80485179

实际例子分析面试过程中经常问到的联合索引,给定一个查询SQL和联合索引,问是否会走索引。

表结构:

CREATE TABLE person (
  id int(2) NOT NULL,
  address varchar(255) DEFAULT NULL,
  age int(11) NOT NULL,
  name varchar(255) DEFAULT NULL,
  PRIMARY KEY (id),
  UNIQUE INDEX idx_person_01 (name, age)
)
ENGINE = MYISAM
AVG_ROW_LENGTH = 26
CHARACTER SET utf8

COLLATE utf8_general_ci;


问题一: 如果查询字段顺序调整:

EXPLAIN  SELECT * FROM person WHERE age = 10 AND name ='张三';



问题二:如果查询字段只用到了age:

EXPLAIN  SELECT * FROM person WHERE age = 10 ;



问题三:如果查询字段含有like:

EXPLAIN  SELECT * FROM person WHERE  name LIKE '张三%' AND age = 10 ;


EXPLAIN  SELECT * FROM person WHERE  name LIKE '%张三%' AND age = 10 ;



问题四:如果查询字段含有>或者<:

EXPLAIN  SELECT * FROM person WHERE  age > 10 AND name = '张三';


EXPLAIN  SELECT * FROM person WHERE  age > 10 AND name like '张三%';



问题五:查询条件中含有函数:

EXPLAIN  SELECT * FROM person WHERE  LEFT(name,2)='张三';





展开阅读全文

没有更多推荐了,返回首页