select * from a,b where a.id=b.id;
a表100GB b表50MB 如何优化??
select *,(select * from b wherea.id=b.id) from a; --标量子查询
A表100GB 是不是几十亿的数据??如果是标量子查询 A返回一条 B就会扫描1次 相当于B被扫描几十亿次
即使B走索引 走索引至少读3个块 然后回表一个块 至少读四个快 几十亿*4 逻辑读很大吧 是不是要搞挂
B的索引是热点块是吧??如果发现索引热点块不要盲目去反键索引keep索引最好办法是从SQL+业务去优化
select * from a,b where a.id=b.id(+);
这个sql如果走NL 去死吧 A做驱动表 是不是B表被扫描几十亿次 同上 如果走HASH如何优化呢??开并行
超大表和小表之间做HASHJOIN