mysql执行疑惑,为什么执行4条sql比执行1条还快。
大家讲道理
大家讲道理 2017-04-17 13:35:20
0
2
336

今天晚上突然发现执行4条sql比执行1条还快,也就是说执行多条单条语句在一定条件下执行效率也是不错的。

4条sql语句如下:
customer是生意关系表,store_idcustomer_id都是店铺的id,有索引。store是店铺表,id是自增主键。我的数据库引擎是MyISAM.

SELECT * FROM customer WHERE store_id=2 AND customer_id=8;

SELECT * FROM customer WHERE store_id=8 AND customer_id=2;

SELECT * FROM store WHERE id=2;

SELECT * FROM store WHERE id=8;

修改成1条sql语句

SELECT 
  COUNT(id) 
FROM
  store 
WHERE id IN 
  (SELECT 
    customer_id 
  FROM
    customer 
  WHERE (store_id = 2 
      AND customer_id = 8) 
    OR (store_id = 8 
      AND customer_id = 2)) ;

问题就出现了:执行四条语句需要0.004s,而执行下面的一条sql需要0.80s,也就是说分别执行4条语句是执行一条语句的快了将近20倍。

我的思考

然后我尝试把单条的sql语句拆成两条,先执行括号内的,发现只需要0.001s,然后执行带in的单条语句,也只需要0.001s,为什么组合起来的时候会出现如此大的差距。然后我根据Profiler进行分析,发现Sending dataexecuting这两天占用时间比较长。

求证

  1. 是不是在某些条件下,多次执行简单sql语句效率确实比写一条复杂sql语句执行效率高,

  2. 上面为什么会出现这种情况,是不是sql语句的书写问题。请大神不吝指出,谢谢。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

reply all(2)
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!