ci mysql高并发_php – MySQL查询性能和Codeigniter

我有这个MySQL查询,我正在加载到我的家庭控制器,并在运行Codeigniter的$this-> output-> enable_profiler(TRUE);我的执行时间为5.3044

我的模型中的查询:

class Post extends CI_Model {

function stream($uid, $updated, $limit) {

$now = microtime(true);

$sql = "

SELECT

*

FROM

vPAS_Posts_Users_Temp

WHERE

post_user_id = ?

AND post_type !=4

AND post_updated > ?

AND post_updated < ?

UNION

SELECT

u.*

FROM

vPAS_Posts_Users_Temp u

JOIN

PAS_Follow f

ON f.folw_followed_user_id = u.post_dynamic_pid

WHERE u.post_updated > ?

AND post_updated < ?

AND (( f.folw_follower_user_id = ? AND f.folw_deleted = 0 )

OR ( u.post_passed_on_by = f.folw_follower_user_id OR u.post_passed_on_by = ? AND u.post_user_id != ? AND u.post_type =4 ))

ORDER BY

post_posted_date DESC

LIMIT ?

";

$query = $this->db->query($sql, array($uid, $updated, $now, $updated, $now, $uid, $uid, $uid, $limit));

return $query->result();

}

}

我可以在这做任何事情来改善执行时间,从而增加我的页面加载吗?

编辑

解释结果

MySQL Workbench Visual Explain

解决方法:

也许你不会相信它,但不要在你的SQL中检索SELECT *.只需写下你想要检索的字段,我认为它会加速很多.

我已经看到在执行查询时(从0.4秒到0.02秒)的速度增加超过20次,只需更改*为必填字段.

其他事项:如果表中的INSERT上有auto_increment id,请不要将post_posted_date用作ORDER字段.按DATETIME字段排序很慢,如果您可以使用INT id(希望您将作为索引),您将更快地获得相同的结果.

UPDATE

根据问题的要求,技术原因:

https://www.icode9.com/content-2-264751.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值