mysql的底层架构:
1.mysql的存储引擎:5.5之前mylsam,5.5之后innodb;
mylsam与innodb的区别:
innodb支持行级锁,事务,数据崩溃恢复,支持外键;mylsam不支持这些;
2.mysql的存储结构:页
innodb的存储结构页:
sql语句:select * from usertable where userid="xx";
底层数据结构:mysql中的多个数据页通过双链表来连接的,而每个数据页中的行记录是通过单链表连接的
底层查找:1.先去遍历双向链表数据页,找到我们记录所在的数据页;
2.如果where是主键查找,可以通过二分法找到我们页中的行记录;
如果where不是主键查找,则通过遍历的方式找到我们页中的行记录;
时间复杂度为O(n)
3.索引:
将我们的数据页变为相对有序的状态,类似目录结构
算法为二分查找,时间复杂度为O(logn);
索引的其底层数据结构为B+树
索引的匹配原则:最左前缀匹配
避免冗余索引:aa,bb和aa的两个索引,前者找到后者一定能找到;
3.查询索引使用:
explain select * from tablename
索引