CREATE DATABASE test;
use test;
CREATE TABLE user (
uid int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) DEFAULT NULL,
pwd varchar(50) DEFAULT NULL,
create_time datetime DEFAULT NULL,
modify_time timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
rids varchar(15) DEFAULT NULL,
nickname varchar(45) DEFAULT NULL,
company varchar(15) DEFAULT NULL,
PRIMARY KEY (uid),
UNIQUE KEY name_UNIQUE (name)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (1, 'rocker', 'rocker', NULL, '2021-02-26 11:05:02', '1', 'rocker', 'rocker');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (2, 'danny', 'danny', NULL, '2021-02-26 11:31:36', '2', 'rocker', 'danny');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (3, 'tom', 'tom', NULL, '2021-02-26 11:31:39', '1', 'tom', 'rocker');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (4, 'messi', 'messi', NULL, '2021-02-26 11:31:21', '2', 'messi', 'messi');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (5, 'wenger', 'wenger', NULL, '2021-02-26 11:29:38', '1', 'wenger', 'rocker');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (6, 'henry', 'henry', NULL, '2021-02-26 11:30:46', '2', 'henry', 'henry');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (7, 'ronaldo', 'ronaldo', NULL, '2021-02-26 11:30:49', '1', 'ronaldo', 'ronaldo');
INSERT INTO user(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (8, 'kaka', 'kaka', NULL, '2021-02-26 11:29:45', '2', 'kaka', 'rocker');
CREATE TABLE account (
uid int(11) NOT NULL AUTO_INCREMENT,
name varchar(50) DEFAULT NULL,
pwd varchar(50) DEFAULT NULL,
create_time datetime DEFAULT NULL,
modify_time timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
rids varchar(15) DEFAULT NULL,
nickname varchar(45) DEFAULT NULL,
company varchar(15) DEFAULT NULL,
PRIMARY KEY (uid),
UNIQUE KEY name_UNIQUE (name)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (5, 'rocker', 'rocker', NULL, '2021-02-26 11:05:02', '1', 'rocker', 'rocker');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (6, 'danny', 'danny', NULL, '2021-02-26 11:31:36', '2', 'rocker', 'danny');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (7, 'tom', 'tom', NULL, '2021-02-26 11:31:39', '1', 'tom', 'rocker');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (8, 'messi', 'messi', NULL, '2021-02-26 11:31:21', '2', 'messi', 'messi');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (9, 'wenger', 'wenger', NULL, '2021-02-26 11:29:38', '1', 'wenger', 'rocker');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (10, 'henry', 'henry', NULL, '2021-02-26 11:30:46', '2', 'henry', 'henry');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (11, 'ronaldo', 'ronaldo', NULL, '2021-02-26 11:30:49', '1', 'ronaldo', 'ronaldo');
INSERT INTO account(uid, name, pwd, create_time, modify_time, rids, nickname, company) VALUES (12, 'kaka', 'kaka', NULL, '2021-02-26 11:29:45', '2', 'kaka', 'rocker');
SELECT * FROM user;
select '不用索引:' as ' ';
explain select * from user where nickname = 'rocker' and company = 'rocker';
select '';
explain select * from user where company = 'rocker' or nickname = 'rocker';
alter table user add index idx_nickname (nickname);
alter table user add index idx_company (company);
select '用索引:' as ' ';
explain select * from user where company = 'rocker' and nickname = 'rocker';
select ' ';
explain select * from user where company = 'rocker' or nickname = 'rocker';
alter table user add index idx_composition (nickname,company);
select '用组合索引:' as ' ';
explain select * from user where company = 'rocker' and nickname = 'rocker';
select ' ';
explain select * from user where company = 'rocker' or nickname = 'rocker';
select '提供参考索引列表:' as 'hint使用:';
explain select * from user use index(idx_company,idx_nickname) where company = 'rocker' and nickname = 'rocker';
select '忽略某个或某几个索引列表:' as '';
explain select * from user ignore index(idx_company,idx_nickname) where company = 'rocker' and nickname = 'rocker';
select '强制使用某个索引:' as '';
explain select * from user force index(idx_company) where company = 'rocker' and nickname = 'rocker';
alter table user add index idx_composition2(company,nickname);
select '组合索引覆盖' as ' ';
explain select uid from user where company = 'rocker' and nickname = 'rocker';
select ' ';
explain select company from user where company = 'rocker' or nickname = 'rocker';
select '模糊查询不走索引' as ' ';
explain select* from user where nickname like '%er';
explain select* from user where nickname like 'e%r';
select '用in/not in不走索引' as ' ';
explain select* from user where uid in (3,7);
explain select* from user where uid between 3 and 7;
select ' ';
explain select* from user where user.uid in(select uid from account);
explain select* from user where exists(select * from account where user.uid=account.uid);
select ' ';