注意:本博客为个人学习记录,不保证正确性,仅供参考指正
索引是什么:
一种有序的存储结构
按照单个或者多个列的值进行排序
索引的目的
索引分类
数据结构:
物理存储:
列属性划分
主键索引:非空唯一索引
唯一索引:允许出现一个null
普通索引
前缀索引:在长字符串中只比较前几个字符
列的个数划分
索引代价
innodb 中表是索引组织表,每张表有且仅有一个主键;
PRIMARY KEY
,则该设置的 key 为该表的主_rowid
作为为什么一定要确定一个主键索引呢?
因为在innodb中数据是存在于聚集索引B+树。
B+树以及Innodb B+树特征是什么?
多路平衡搜索树:搜索指有序,中序遍历,比较key进行排序
Innodb B+树特征是:
索引实现:为什么是B+树而不是其他树(如平衡二叉搜索树)
索引使用场景
不要使用索引的场景
外键约束:innodb可以用
父表改动会影响子表
create table parent (id int not null,primary key(id)) engine=innodb;create table child (id int,parent_id int,foreign key(parent_id) references parent(id)ON DELETE CASCADE ON UPDATE CASCADE) engine=innodb;
parent表中删除一行,对应id在child中的相同parent_id的那一行也会删除。
左模糊
explain select * from index_failure_t where name like '谢%';
explain select * from index_failure_t where name like '%谢';
索引参与运算
where
尽量减少索引,因为一个索引就是一颗B+树了
找到慢的sql语句:
SHOW FULL PROCESSLIST
开启慢查询日志
SET GLOBAL slow_query_log = ON; -- on 开启 off关闭
SET GLOBAL long_query_time = 4; -- 单位秒;默认10s;此时设置为4s
分析sql语句
工作中不要用age字段,要存储生日。
上一篇:提高大型装配体的处理速度
下一篇:理解卷积反演规则和对偶规则