1.内连接 inner join 取交集 2.外连接 取并集。 左连接,以左表为准,右表不存在补null;
mysql对in子查询的优化 物化表 (mysql表记录找出来,建临时表。) 物化表转链接 子查询转半连接 (子查询中的表上拉,重复值消除,松散扫描,半连接物化,首次匹配 )
select * from s1 where a1 in (select a from s2 where b=‘a’); semi join 半连接 explan SQl 语句 show warnings;
不管子查询是相关或是不相关,都可以把in子查询尝试转换为exists子查询。
InnoDB记录存储结构和索引页结构
页 16KB 行格式: Cpmpact,Redundant,Dynamic,Compressed 4种格式差别不大; 变长字段长度列表,偏移量
B+树,页和页之间是双向链表;页内部是单向链表;
DB_ROW_ID(row_id) 不一定有。没有指定主键,mysql生成的。 DB_TRX_ID 事务ID DB_ROLL_PTR
数据溢出: compact 60000字节,会把前768个赞成放在列里,其他的放在其他页,通过指针指向。 Dynamic,Compressed, 直接存放在其他页,通过指针指向。
索引页格式: 链表的查询时间O(n) Page Directory (槽,当前一组,最后一列的指针信息,) 通过二分查找定位到槽。
File header Page header Infimum+Supermum —真实数据 uer Records --真实数据 Free Space page Directory File Trailer
独立表空间结构 区 段
|