上篇文章我们介绍了mysql的安装目录和 数据存储目录是不同的,当create database时,会在数据存储目录下新建一个同名的数据库文件,进入指定数据库文件会有db.opt文件记录数据库的特点,字符集,比较规则等。当create table时,...
长字符串查询的时候,对时间和空间耗费都大,这时候可以创建hash索引或者选择字符串前几位做索引排序,若使用字符串前缀做索引,则会排序失效,用文件排序。...
上篇文章我们说了索引排序和排序注意事项,排序不要用复杂的函数,范围查找的时候,左边的列有索引效果,后面的列没有,除非指定特定值,like模糊查询时候,前面不要用%,asc desc不要混用。索引排序之所以快,因为b+树里面的双向链表...
上篇文章我们介绍了匹配列前缀,因为索引排序按字母一个个比较的特性,如果%在前面则不能触发索引,还有范围匹配,范围查询的时候,最左边的列可以触发索引,当前面有精确值的时候,比如name = ‘’,第二个范围也能触发索引,之后的则...
上篇文章我们说了,myISAM表和innoDB表的不同,myISAM吧用户记录数据放在数据文件,会给每行数据一个行号,myISAM会给主键生成索引,吧索引页放在索引文件。B+树的叶子节点存储的是主键+行号,意味着第一次通过主键查询只能查到...
上篇文章我们说了,联合索引会用两个以上列来创建索引,b+树是一颗,先用c2列排序,若结果相同,则用c3排序。innoDB的b+树特点是根节点保持不变,新表是先默认有聚簇索引,先有一个没有数据的根目录节点,放用户记录数据放入根几点中...
上篇文章说了b+树索引的方案,因为用之前二分法查找,前提条件是索引必须是挨着的,而受到用户记录数的启发,建立了和用户记录真实数据页一样的目录记录页(索引),并且最高三层,最高层是根节点,最底层是叶子节点,其他是非叶子节点...
上篇文章我们说了一个简单索引实例,必须满足条件下一个页的最小主键必须必上一个页的最大主键大,否则会吧大的放到后面页去,这个过程叫做页分裂。查询的时候有个key和page_no组成的查询索引,key就是若干页每个页最小的主...
前面我们说了innoDB有很多页类型,主要介绍了index索引页,包含七个主要部分。File header里有效验和和file_page_prev和file_page_next吧所有的页联系起来,组成双向链表。Page header里有当前页的槽点和记录数,还有next re...
上篇文章我们说了,索引页分为7个部分,其中free space会给user recoreds分配空间存储真实数据,直到用完申请新的页。查询拥有page directory,会分成不同的槽点,最小槽点有一个值,最大槽点有1~8个值,查询的时候用二分查找法定...