前言 大家好吖,欢迎来到 YY 滴MySQL系列 ,热烈欢迎! 本章主要内容面向接触过C++的老铁 主要内容含:
优点:
缺点:
MySQL的索引是在存储引擎层实现的,不同的存储引擎有不同的结构,主要包含以下几种:
不同索引在不同引擎中的适用情况:
Hash索引特点:
存储引擎支持:
索引常规分为4种,分别是:
在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种:
聚集索引存储规则:
聚集索引和二级索引演示:
CREATE [UNIQUE|FULLTEXT] INDEX index_name ON table_name ( index_col_name,...) ;
SHOW INDEX FROM table_name (最后加上\G,可转换显示方式,由列展示变行展示)
DROP INDEX index_name ON table_name;
按照下列的需求,完成索引的创建:
-- 需求1:name字段为姓名字段,该字段的值可能会重复,为该字段创建索引。
create index idx_user_name on tb_user(name);
-- 需求2:phone手机号字段的值,是非空,且唯一的,为该字段创建唯一索引。
create unique index idx_user_phone on tb_user(phone);
-- 需求3:为profession、age、status创建联合索引。
create index idx_user_pro_age_sta on th_user(profession,age,status);
-- 需求4:为email建立合适的索引来提升查询效率。
create index idx user_email on tb_user(email);
-- 删除索引
drop index idx_user_email on tb_user;
MySQL客户端连接成功后,通过show [sessionlglobal] status命令可以提供服务器状态信息。通过如下指令,可以查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次:
SHOW GLOBAL STATUS LIKE 'Com_______‘; --模糊匹配,7个_代表7个字符
我们要关注增删查改操作
show variables like 'slow query log';
slow_query_log=1
long_query_time=2
tail -f localhost-slow.1og
SELECT @@have_profiling ;
SET profiling=1;
select @profiling;
EXPLAIN 或者 DESC命令获取 MySQL如何执行 SELECT语句的信息,包括在 SELECT语句执行过程中表如何连接和连接的顺序。
演示:
演示:
演示:
演示:
演示:
索引失效:
演示:
演示:
演示: