php数据算法,php – 从数据库中检索数据的最有效算法

因此,当我准备转移到不支持此功能的Cassandra时,我正在从查询中删除联接,而是支持许多select语句.我在我的

mysql表(我目前正在使用的)中对50行数据进行了基准测试,结果是101个查询(全部选择),完成所有这些查询需要大约0.035秒.然后我将其更改为一些数组操作(目前在

PHP中)并将其减少为3个查询,其中包含一堆O(n)for循环.

我假设我的系统是在PHP,Python,MySQL还是Cassandra(NoSQL)上,使用一些O(n)for循环而不是更多的查询处理数据的速度更快,我减少了时间使用这种新方法0.035s到0.004s,如下所示.

是否有其他方法可以缩短此范围?还是我走在正确的轨道上?在任何情况下运行所有​​查询的速度都会更快(除非它变为O(n ^ 2))?谢谢:

// Now go through and get all of the user information (This is slower in mysql, but maybe faster in cassandra)

/*foreach ($results as $key => $row)

{

// Create query

$query = DB::select('id', 'username', 'profile_picture')->from('users')->where('id', '=', $row['uid']);

// Execute it

$results2 = $query->execute(null, false);

// Join it

$data[$key] = array_merge($row, $results2[0]);

}*/

// Get all the user information (faster in mysql since less queries)

$uids = array();

$ids = array();

foreach ($results as $key => $row)

{

if (!in_array($row['uid'], $uids))

$uids[] = $row['uid'];

if (!in_array($type, array('userProfile')))

$ids[] = $row['comment_id'];

}

// Create query

$query = DB::select('id', 'username', 'profile_picture')->from('users')->where('id', '=', $uids);

// Execute it

$results2 = $query->execute(null, false);

$user_data = array();

foreach ($results2 as $key => $row)

{

$user_data[$row['id']] = array('uid' => $row['id'], 'username' => $row['username'], 'profile_picture' => $row['profile_picture']);

}

foreach ($results as $key => $row)

{

$data[$key] = array_merge($row, $user_data[$row['uid']]);

}

// End faster user info section

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值