索引
视图
我理解的视图就是一条 查询语句的封装
CREATE VIEW user_view
AS SELECT username FROM user ;
SELECT * FROM user_view ;
存储过程
查询存储过程
删除存储过程
声明变量
DECLARE
SET
SELECT INTO
IF
传递参数
输出
WHILE
REPEAT
游标
触发器
MYSQL体系结构
存储引擎
InnoDB
INNODB在Linux中实际存储位置 /var/lib/mysql
frm为表结构文件
ibd为数据文件
MyISAM
不支持事务 查询快
文件存储方式
Memory
Merge
存储引擎的选择
SQL优化
查看SQL执行频率
定位效率低执行SQL
从上往下 效率越来越低
-- 查看当前系统是否支持profile工具
SELECT @@have_profiling;
-- 查看是否开启profiling工具 1开启 0为开启
SELECT @@profiling;
-- 开启profiling
SET profiling = 1;
-- 开启优化器, 输出格式为JSON
SET optimizer_trace="enabled=on",end_markers_in_json=on;
-- 占用内存大小
SET optimizer_trace_max_mem_size=1000000
-- 查看日志
SELECT * FROM information_schema.OPTIMIZER_TRACE;
查询索引从最左列开始, 不能跳过索引列
联合索引 范围查询之后的字段索引失效!
索引列进行运算 所有将失效
隐式类型转换会使索引失效 因为底层造成了索引字段运算
using index conition 用到了索引但是需要回表查询
使用复合索引解决模糊匹配, 只查询索引列
Load批量插入
数据需要是有序的
关闭唯一性校验
优化Insert
分页优化