查询优化
关联列类型不同
在实际项目中,有时候会遇到,关联查询时关联列的数据类型不同,这样会导致走不到索引,下面我们来看一下实际例子:
查询SQL:
查询结果如下:
可以看到,查询结果是1.581秒,这里只查询一条,一般需要一次查询1000条或是2000条。会达到3秒左右。
我们将SQL分析一下:
可以看到,我们sale表type 是 all, 查询了全表的1720651条。所以就是sale表没走到索引。
查询b表和sale表的相应字段,发现b表的tid是bigint类型,sale表的order_num字段是varchar类型。字段类型不同,走不到索引,我们将关联的条件换成下面的:
也可以是
再次查询:
可以看到,结果查询的时间是0.098表,查询的时间快了十几倍。
再次分析一下SQL:
可以看到 type由 all 变成了 ref,查询条数变成了1。
算是有意识的优化查询SQL吧,这也是注重效率的开始,加油!