索引法则--字符串不加单引号会导致索引失效

 

Mysql 系列文章主页 

 

===============

 

1 准备数据

1.1 建表

DROP TABLE IF EXISTS staff;
CREATE TABLE IF NOT EXISTS staff (
    id INT PRIMARY KEY auto_increment,
    name VARCHAR(50),
    age INT,
    pos VARCHAR(50) COMMENT '职位',
    salary DECIMAL(10,2)
);

1.2 插入数据

INSERT INTO staff(name, age, pos, salary) VALUES('11223344', 22, 'HR', 5000);

注意:此处的 name = '11223344',这是一个数字,但,也是一个字符串,对吧~

2 测试&Explain分析

2.1 创建索引

CREATE INDEX idx_nameAgePos ON staff(name, age, pos);

2.2 测试

Case#1:有单引号

EXPLAIN SELECT * FROM staff WHERE name = '11223344';

结果:type=ref,索引正常使用。

Case#2:没有单引号

EXPLAIN SELECT * FROM staff WHERE name = 11223344;

结果:type=all,全表扫描,索引没有被使用。

对比上面两个Case,不难看出,对于索引上的字符串查询条件(例子中的 name),如果不加单引号,会导致索引失效进而转为全表扫描!

3 结论

字符串不加单引号会导致索引失效

 

posted @ 2018-04-24 15:10  cyhbyw  阅读(1156)  评论(0编辑  收藏  举报