1、查询返回列不要尽量不使用*,用二级覆盖索引里面的字段
2、小表驱动大表,in后面先执行放小表,exist前面先执行放小表
3、join的时候如果没有使用索引,一般是BNL算法,A join B,即把B数据加载到无序的join_buffer中,然后逐行扫描A跟B里的每条数据对比,扫描行数为row(A)+row(B),
内存比对次数为row(A)x row(B),有索引情况是使用NLJ算法,扫描B里的每一行,A直接根据索引找到对应数据,扫描行数为row(B)x2。比对次数为row(B)
1、查询返回列不要尽量不使用*,用二级覆盖索引里面的字段
2、小表驱动大表,in后面先执行放小表,exist前面先执行放小表
3、join的时候如果没有使用索引,一般是BNL算法,A join B,即把B数据加载到无序的join_buffer中,然后逐行扫描A跟B里的每条数据对比,扫描行数为row(A)+row(B),
内存比对次数为row(A)x row(B),有索引情况是使用NLJ算法,扫描B里的每一行,A直接根据索引找到对应数据,扫描行数为row(B)x2。比对次数为row(B)