php findbysql,MySql与PHP配合查询数据哪种方法更快?

背景: 大概10000条数据表中有个 ‘status’ 字段,状态为 0 或 1, 需要把表中的数据按status进行分类。

即:我需要得到这样一个数组(不要纠结于我的命名。。。):

[

0 => [

['id' => 1, 'status' => 0, 'name' => 'zhangsan'],

['id' => 3, 'status' => 0, 'name' => 'zhangsan2'],

......此处省略n行

],

1 => [

['id' => 1, 'status' => 1, 'name' => 'zhangsi'],

['id' => 3, 'status' => 1, 'name' => 'zhangsi2'],

......此处省略n行

],

]

方法一 : mysql 查询一次,利用php遍历分类成数组(不考虑使用php内置array函数)

$sql = 'select * from table';

$res = $model->findBySql($sql)->all();

$arr[0] = [];

$arr[1] = [];

foreach ($res as $var) {

switch ($var->status) {

case 0 :

$arr[0][] = $var;

break;

case 1 :

$arr[1][] = $var;

break;

}

}

return $arr;

方法二 : mysql分别查询两次

$sql0 = 'select * from table where status=0';

$sql1 = 'select * from table where status=1';

$arr[0] = $model->findBySql($sql0)->all();

$arr[1] = $model->findBySql($sql1)->all();

return $arr;

这两种方式那个快?是绝对的吗?

若表中有十万条,一百万条数据呢?

若 status 有 10 种,100 种,1000种呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值