跟着小豆学SQL:8 [进阶]索引
use test ; show index from user; # 查看表索引 drop index idcard on user; # 删除表索引 create index testa on user (id,idcard) ; # 创建联合索引 /* 最左前缀法则 如果索引关联了多列(联合索引),要遵守最左前缀法则,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。 如果跳跃
use test ; show index from user; # 查看表索引 drop index idcard on user; # 删除表索引 create index testa on user (id,idcard) ; # 创建联合索引 /* 最左前缀法则 如果索引关联了多列(联合索引),要遵守最左前缀法则,最左前缀法则指的是查询从索引的最左列开始,并且不跳过索引中的列。 如果跳跃
use test; show global status like 'Com_______' ;# 查看当前数据库 select insert update 等语句访问频次 # 慢日志 show variables like 'slow_query_log' ;# off 关闭 # 打开慢日志开关需要修改文件 my.cnf # 开启慢查询日志开关 -- slow_query_log=1 # 设置
show engines ; -- 可以看到mysql 支持的引擎,其中innodb是默认的引擎,如果没有特殊需求,请默认使用它 /* 特点 InnoDB MyISAM Memory 存储限制 64TB 有 有 事务安全 支持 - - 锁机制 行锁 表锁 表锁 B+tree索引 支持 支持 支持 Hash索引
# 查看是否开启自动提交 select @@autocommit; # 1为开启,你的每次操作会被自动提交 set @@autocommit = 0; # (全局,但只对当前会话有效 # 设置为0后操作需要手动commit update product set price = 99 where product_name = 'A'; # 执行上面的代码再看看product,是不是价格还没有变? c
use test; select * from user u, product p; # 合并查询,会显示所有表数据 user [as] u 设置别名,as可以省略 # 内联查询 查询交集部分 select u.name, p.product_name from user u, product p where p.user_id = u.id; # 外联查询 # --左外联查询 可以查询左表所有数