crstudio 2019-10-16 15:48:33 6307次浏览 3条回复 1 6 0
$s = microtime(true);
$list = Article::find()->asArray()->all();
echo bcsub(microtime(true), $s, 5);
//0.01130 秒

$s = microtime(true);
$list = Article::find()->all();
echo bcsub(microtime(true), $s, 5);
//0.03550秒

注:

  1. 均有Yii自带缓存加成
  2. 35000条数据

如此看来,如果只是单纯的取数据,那我们最好还是加上 asArray() 这样可以提升性能

觉得很赞
  • 回复于 2019-10-18 09:04 举报

    是不是跟asArray取的是纯数组,不加取的是臃肿的对象也有关

    1 条回复
    回复于 2020-03-25 17:17 回复

    的确有这种可能

    觉得很赞
  • 回复于 2019-10-19 08:30 举报

    我用24个字段,124533行数据做测试,加了asArray后,1秒左右,不加asArray的话,需要40-45秒。

    但是加了asArray后,得到的数据都是字符串,没有整数类型的,这个怎么解决啊?
    交给前端的数据都是字符串,处理者很麻烦

    3 条回复
    回复于 2019-10-23 09:21 回复

    在模型规则中定好字段类型

    回复于 2019-10-23 13:30 回复

    如果使用asArray()方法,就不会走AR模型,rules规则就没用了

    回复于 2020-03-25 17:19 回复

    你的数据更具有说服力,你这后面的字符串型数字,可以再循环处理一下,或者修改yii底层的AR了

    觉得很赞
  • 回复于 2020-04-02 22:21 举报

    经常 我们用ActiveQuery 更多,性能更好!

您需要登录后才可以回复。登录 | 立即注册