mysql 优化

people表中(zipcode,lastname,firstname)构成一个索引。

如果没有使用索引下推技术,则MySQL会通过zipcode='95054'从存储引擎中查询对应的元祖,返回到MySQL服务端,然后MySQL服务端基于lastname LIKE '%etrunia%'和address LIKE '%Main Street%'来判断元祖是否符合条件。

如果使用了索引下推技术,则MYSQL首先会返回符合zipcode='95054'的索引,然后根据lastname LIKE '%etrunia%'和address LIKE '%Main Street%'来判断索引是否符合条件。如果符合条件,则根据该索引来定位对应的元祖,如果不符合,则直接reject掉。


mysql join使用MySQL使用嵌套循环算法(Nested-Loop)或其变体来执行表之间的连接。

Nested-Loop Join Algorithm:
嵌套循环连接算法


从循环中的第一个表中逐行读取一行,将每行传递给处理连接中下一个表

for each row in t1 matching range{

for each row in t2 matching reference key {

for each row in t3 {

if row satisfies join conditions, send to client

                }

        }

}


Block Nested-Loop Join Algorithm:
块嵌套循环连接算法(BLJ)


for each row in t1 matching range {

for each row in t2 matching reference key {

     store used columns from t1, t2 in join buffer

if buffer is full {

                for each row in t3 {

                            for each t1, t2 combination in join buffer {

                if row satisfies join conditions, send to client

}

}

empty join buffer

}

}

}

if buffer is not empty {

for each row in t3 {

    for each t1, t2 combination in join buffer {

        if row satisfies join conditions, send to client

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值