单表访问地方法//连接

1、const
有的时候我们可以通过主键列来定位一条记录,比方说这个查询:

SELECT * FROM single_table WHERE id = 1438;

通过主键或者唯一二级索引列来定位一条记录的访问方法定义为:const
2、ref
普通的二级索引来说,通过索引列进行等值比较后可能匹配到多条连续的记录,而不是像主键或者唯一二级索引那样最多只能匹配1条记录,称为:ref方法
但是如果最左边的连续索引列并不全部是等值比较的话,它的访问方法就不能称为ref了
3、ref_or_null
不仅想找出某个二级索引列的值等于某个常数的记录,还想把该列的值为NULL的记录也找出来,就像下边这个查询:

SELECT * FROM single_table WHERE key1 = 'abc' OR key1 IS NULL;

4、range
索引列需要匹配某个或某些范围的值
5、index
采用遍历二级索引记录的执行方式称之为:index
6、all
全盘扫描

索引合并

Intersection合并(交集)

  • 二级索引列是等值匹配的情况,对于联合索引来说,在联合索引中的每个列都必须等值匹配,不能出现只匹配部分列的情况。
  • 主键列可以是范围匹配
    Union合并(并集)
  • 二级索引列是等值匹配的情况,对于联合索引来说,在联合索引中的每个列都必须等值匹配,不能出现只出现匹配部分列的情况。
  • 主键列可以是范围匹配
  • 使用Intersection索引合并的搜索条件
    Sort-Union合并
    先按照二级索引记录的主键值进行排序,之后按照Union索引合并方式执行的方式称之为Sort-Union索引合并,很显然,这种Sort-Union索引合并比单纯的Union索引合并多了一步对二级索引记录的主键值排序的过程。

连接的概念

  1. 连接的本质是多表相连产生的笛卡尔积结果集
  2. 驱动表和被驱动表,驱动表只访问一次,被驱动表访问多次
  3. 内连接,左连接,右连接(inner join,left join, right join)
  4. 内连接中的WHERE子句和ON子句是等价的
  5. 左连接和右连接,必须使用ON子句来指出连接条件
  6. 左连接是指以左边的表为准匹配右边表内容,没内容则null取代
    连接的原理
  7. 嵌套循环连接。(for 嵌套的方式)
  8. 使用索引加快连接速度。
  9. 基于块的嵌套循环连接。提前划出一块内存(join buffer)存储驱动表结果集中的记录,然后开始扫描被驱动表,每一条被驱动表的记录一次性和这块内存中的多条驱动表记录匹配,可以显著减少被驱动表的I/O操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值