我的Mysql学习笔记
一、为什么要使用索引?
使用索引查找数据,能够避免全表扫描,提升查找效率。
二、什么样的信息能成为索引?
主键、唯一键等能让数据具备一定区别性的字段
三、索引的数据结构?
主流:B+ tree,小众:hash bitMap(oracle)
四、密集索引和稀疏索引的区别?
密集索引:每个搜索码值都对应一个索引值(索引跟数据一同存储)
稀疏索引:只为某些搜索码值对应索引值(索引跟数据分开存储)
五、mysql慢查询,处理sql语句执行速度慢问题
六、联合索引最左匹配原则
最左前缀匹配原则,非常重要的原则, mysql会一直向右匹配直到遇到范围查询(>、<、between, like)就停止匹配,比如a =3 and b=4 and c> 5 and d=6如果建立(a,b,c,d)顺序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引则都可以用到, a,b,d的顺序可以任意调整。
=和in可以乱序,比如a =1 and b=2 and c=3建立(a,b,c)索引可以任意顺序, mysql的查询优化器会帮你优化成索引可以识别的形式。
七、MyISAM与InooDB
MyISAM:表锁,聚集索引、(查询高,没有事物,count(*))
InooDB:行锁(默认)、表锁,非聚集索引、(增删改查频繁、可靠性高、支持事物)