比如查询用户是否购买过该产品,需要到订单表根据用户id和产品id查询是否存在记录$isBuy = $mOrder->where($map)->count();
if($isBuy > 0 ) {
   echo "已购买";
} else {
   echo "未购买";
}$isBuy = $mOrder->where($map)->find();
if(!empty($isBuy) ) {
   echo "已购买";
} else {
   echo "未购买";
}大概有百万条数据,这两种count和find哪个效率更高,对数据库影响更小呢?

解决方案 »

  1.   

    这个你测试一下不就知道了,这个得看你的表结构跟你的查询条件等等因素 。一般来说find()应该要好点
      

  2.   

    一般来说,如果你的表引擎是innodb.那么这个count的问题就出来了。
      

  3.   

    个人感觉应该find好些。同样的条件:假设你的$map是走索引的情况,效果差不多。如果$map部分不走索引,可能要在几百条数据中count,还是用find吧。
      

  4.   

    我感觉一般 find 好,
    find 找到 1条就返回
    count,  到1条 +1 ,  第二条在+1; 当然条件相同的可能有缓存, 记住结果直接返回