mysql延迟关联

所谓延迟关联,就是本来通过一个比较耗时的条件搜索到全部数据的sql,分解为先通过该条件搜索到对应id,再用id内联原表取得所有字段值

例1:使用延迟关联方式,比直接搜索快一倍多

select * from house_rent where c_datetime>'2013-06-08' and title like "%宣庆街%"
(共 25 行, 查询花费 0.1435 秒)

id   select_type      table            type      possible_keys       key      key_len       ref        rows      Extra
1       SIMPLE      house_rent    ALL             NULL              NULL     NULL      NULL   24534  Using where

select * from house_rent as c join ( select id from house_rent where c_datetime>'2013-06-08' and title like "%宣庆街%" )as b on (b.id=c.id)
(共 25 行, 查询花费 0.0593 秒)


id   select_type      table            type      possible_keys       key      key_len       ref        rows      Extra
1      PRIMARY   <derived2>     ALL                 NULL          NULL      NULL      NULL      25
1      PRIMARY           c             eq_ref           PRIMARY    PRIMARY      4            b.id          1
2      DERIVED   house_rent    ALL                 NULL          NULL      NULL      NULL    34071  Using where


例2:分页上的应用,一样比直接搜索快1倍

select * from house_rent order by uid,content_code limit 1200,10
(共 10 行, 查询花费 0.0465 秒)


select * from house_rent inner join (select id from house_rent order by uid,content_code limit 1200,10 ) as b using(id)
(共 27485 行, 查询花费 0.0260 秒)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值