MySQL索引语法和索引性能分析

在这里插入图片描述

CREATE [ UNIQUE | FULLTEXT ] INDEX index_name ON table_name (
index_col_name,... ) ;

在这里插入图片描述

SHOW INDEX FROM table_name(表名) ;

在这里插入图片描述

DROP INDEX index_name(索引名称) ON table_name(表名) ;

在这里插入图片描述

-- 创建数据库test
create database if not exists test;
use test;


-- 创建表tb_user
create table tb_user(
                        id int primary key auto_increment comment '主键',
                        name varchar(50) not null comment '用户名',
                        phone varchar(11) not null comment '手机号',
                        email varchar(100) comment '邮箱',
                        profession varchar(11) comment '专业',
                        age tinyint unsigned comment '年龄',
                        gender char(1) comment '性别 , 1: 男, 2: 女',
                        status char(1) comment '状态',
                        createtime datetime  default now() comment  '创建时间'
) comment '系统用户表';

INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('吕布', '18877990000', 'lvbu666@163.com', '软件工程', 23, '1', '6');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('曹操', '18877990001', 'caocao666@qq.com', '通讯工程', 33, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('赵云', '18877990002', '18877990@139.com', '英语', 34, '1', '2');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('孙悟空', '18877990003', '18877990@sina.com', '工程造价', 54, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('花木兰', '18877990004', '19980729@sina.com', '软件工程', 23, '2', '1');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('大乔', '18877990005', 'daqiao666@sina.com', '舞蹈', 22, '2', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('露娜', '18877990006', 'luna_love@sina.com', '应用数学', 24, '2', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('程咬金', '18877990007', 'chengyaojin@163.com', '化工', 38, '1', '5');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('项羽', '18877990008', 'xiaoyu666@qq.com', '金属材料', 43, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('白起', '18877990009', 'baiqi666@sina.com', '机械工程及其自动化', 27, '1', '2');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('韩信', '18877990010', 'hanxin520@163.com', '无机非金属材料工程', 27, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('荆轲', '18877990011', 'jingke123@163.com', '会计', 29, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('兰陵王', '18877990012', 'lanlinwang666@126.com', '工程造价', 44, '1', '1');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('狂铁', '18877990013', 'kuangtie@sina.com', '应用数学', 43, '1', '2');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('貂蝉', '18877990014', '84958948374@qq.com', '软件工程', 40, '2', '3');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('妲己', '18877990015', '2783238293@qq.com', '软件工程', 31, '2', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('芈月', '18877990016', 'xiaomin2001@sina.com', '工业经济', 35, '2', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('嬴政', '18877990017', '8839434342@qq.com', '化工', 38, '1', '1');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('狄仁杰', '18877990018', 'jujiamlm8166@163.com', '国际贸易', 30, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('安琪拉', '18877990019', 'jdodm1h@126.com', '城市规划', 51, '2', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('典韦', '18877990020', 'ycaunanjian@163.com', '城市规划', 52, '1', '2');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('廉颇', '18877990021', 'lianpo321@126.com', '土木工程', 19, '1', '3');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('后羿', '18877990022', 'altycj2000@139.com', '城市园林', 20, '1', '0');
INSERT INTO tb_user (name, phone, email, profession, age, gender, status) VALUES ('姜子牙', '18877990023', '37483844@qq.com', '工程造价', 29, '1', '4');
-- 表中数据

select * from tb_user;

在这里插入图片描述

-- 创建单列索引
create index user_name_index on tb_user(name);

在这里插入图片描述

create unique index user_phone_index on tb_user(phone);

在这里插入图片描述

create index user_pro_age_sta_index on tb_user(profession,age,status);

在这里插入图片描述

create index user_email_index on tb_user(email);

在这里插入图片描述

show index from tb_user;

在这里插入图片描述

-- session 是查看当前会话 ;
-- global 是查询全局数据 ;
SHOW GLOBAL STATUS LIKE 'Com_______';

在这里插入图片描述

show variables like '%slow_query_log%'

在这里插入图片描述

set global slow_query_log =1;
show variables like '%slow_query_log%';

在这里插入图片描述

--设置完毕后,重新登陆后起效 (不需要重启服)
set global long_query_time =2;
-- 查看慢查询阈值时间
show variables like '%long_query_time%';  务)

在这里插入图片描述

CREATE TABLE tb_sku (
                        `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品id',
                        `sn` varchar(100) NOT NULL COMMENT '商品条码',
                        `name` varchar(200) NOT NULL COMMENT 'SKU名称',
                        `price` int(20) NOT NULL COMMENT '价格(分)',
                        `num` int(10) NOT NULL COMMENT '库存数量',
                        `alert_num` int(11) DEFAULT NULL COMMENT '库存预警数量',
                        `image` varchar(200) DEFAULT NULL COMMENT '商品图片',
                        `images` varchar(2000) DEFAULT NULL COMMENT '商品图片列表',
                        `weight` int(11) DEFAULT NULL COMMENT '重量(克)',
                        `create_time` datetime DEFAULT NULL COMMENT '创建时间',
                        `update_time` datetime DEFAULT NULL COMMENT '更新时间',
                        `category_name` varchar(200) DEFAULT NULL COMMENT '类目名称',
                        `brand_name` varchar(100) DEFAULT NULL COMMENT '品牌名称',
                        `spec` varchar(200) DEFAULT NULL COMMENT '规格',
                        `sale_num` int(11) DEFAULT '0' COMMENT '销量',
                        `comment_num` int(11) DEFAULT '0' COMMENT '评论数',
                        `status` char(1) DEFAULT '1' COMMENT '商品状态 1-正常,2-下架,3-删除',
                        PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

在这里插入图片描述
在这里插入图片描述

copy *.sql all_sku.sql

在这里插入图片描述
在这里插入图片描述

select * from tb_user; -- 这条SQL执行效率比较高, 执行耗时 0.00sec

在这里插入图片描述

select count(*) from tb_sku; -- 由于tb_sku表中, 预先存入了1000w的记录, count一次,耗时
10s左右

在这里插入图片描述

show variables like '%slow_query_log%';

在这里插入图片描述

SELECT @@have_profiling ;

在这里插入图片描述
在这里插入图片描述

select * from tb_user;
select * from tb_user where id = 1;
select * from tb_user where name = '白起';
select count(*) from tb_sku;

在这里插入图片描述

-- 查看每一条SQL的耗时基本情况
show profiles;

在这里插入图片描述

show profile for query query_id;

在这里插入图片描述

-- 查看指定query_id的SQL语句CPU的使用情况
show profile cpu for query query_id;

在这里插入图片描述

-- 直接在select语句之前加上关键字 explain / desc
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件 ;

在这里插入图片描述

-- 语句中id表示的是主键
explain select * from   tb_user where id=1;

在这里插入图片描述

-- name 是索引
 explain SELECT * FROM tb_user WHERE name= '李四'; 

在这里插入图片描述

 explain SELECT * FROM tb_user WHERE id BETWEEN 1 AND 10;

在这里插入图片描述

explain SELECT * FROM tb_user;

转载:https://mp.weixin.qq.com/s/QMQ_Rfx6DpbzH2_YuKInGw

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值