(1)多表的索引计算成本:
比如SQL: select * from t1 join t2 on t1.x1=t2.x1 where t1.x2=xx and t1.x3=xx and t2.x4=xx and t2.x5=xx
一般来说,都会先选择一个驱动表比如t1作为驱动表,此时就需要根据t1.x2=xx 和 t1.x3=xx 这个条件从表里查询一批符合条件的数据出来,此时就有一个问题,这里用了t1的两个字段
来筛选数据,可能x2和x3字段都建立了索引,此时到底选择哪个索引?或者直接全表扫描?
此时就会按照之前的那套方法,计算针对t1表查询的全表扫描和不同索引的成本,选择针对t1表的最佳访问方式,用最低成本从t1表里查出符合条件的数据来,接着就根据这波数据去 t2表里
查数据,按照连接条件t1.x1 = t2.x1 去查,同时符合 t2.x4=xx 和 t2.x5=xx 这两个条件。
此时一样会根据之前讲的方法估算,针对t2表的全表扫描以及基于x4,x5,x1 这几个字段不同索引的访问的成本,挑选一个成本最低的方法,然后从t2表里把数据查出来,就可以了,这就
完成了多表关联。