当前数据库版本:MySQL5.5,存储引擎:MyISAM
SQL 左链接
SELECT COUNT(*) AS tp_count FROM `cmf_order` `o` LEFT JOIN `cmf_order_device_goods` `od` ON `o`.`order_id`=`od`.`order_id` LEFT JOIN `cmf_user_machine` `um` ON `o`.`mid`=`um`.`id` LIMIT 1;
查询数据总条数:2964142 条,查询时间 7.344 秒
SQL 内连接
SELECT COUNT(*) AS tp_count FROM `cmf_order` `o` INNER JOIN `cmf_order_device_goods` `od` ON `o`.`order_id`=`od`.`order_id` INNER JOIN `cmf_user_machine` `um` ON `o`.`mid`=`um`.`id` LIMIT 1;
查询数据总条数:2960406,查询时间 23.627 秒
单表 count 查询
SQL:SELECT COUNT(*) FROM `cmf_order`;
查询数据总条数:2964142,查询时间 0.028 秒
基本结论:
1、左连接(右连接)的查询效率高于内连接;
2、聚合查询在没有条件限制的情况下会走全表扫描;
3、 左连接(右连接)查询结果的数据条数等于主表的数量,内连接的查询结果取得是内连接多张数据表的交集,实际数据量可能会小于预期的数据量;
4、聚合查询单表操作效率高于连表查询。