Discuz!官方免费开源建站系统

 找回密码
 立即注册
搜索

[汗]看看争车位这要命的查询,不想死的进来看

[复制链接]
liuzhly 发表于 2009-12-8 13:29:38 | 显示全部楼层 |阅读模式
近几天,发现服务器经常无响应,但是过一阵就好了,费了好大劲,在后台监控中看到这么个查询语句:

SELECT *,(select sum(c.carprice) from uchome_park_carinfo c,uchome_park_mycar m where c.carid=m.carid and  m.uid=p.uid group by m.uid) as carprice,(select count(*) from uchome_park_mycar where uid=s.uid) as carnum  FROM uchome_space s ,uchome_park_member p..(省略若干)

然后搜索程序,在park_rank.php中,36行找到如下语句,看来很是让人汗:

$query = $_SGLOBAL['db']->query("SELECT *,(select sum(c.carprice) from ".tname('park_carinfo')." c,".tname('park_mycar')." m where c.carid=m.carid and  m.uid=p.uid group by m.uid) as carprice,(select count(*) from ".tname('park_mycar')." where uid=s.uid) as carnum  FROM ".tname('space')." s ,".tname('park_member')." p WHERE s.uid=p.uid ".$wheresql.$ordersql." LIMIT $start,$perpage");

就这么个查询法,服务器不挂都不行...

所有的mysql进程都在等此进程,简直就是几分钟之内所有的mysql进程都处于lock状态等待其执行完毕,如果同时使用此查询的人多了,简直要老命了....

试问,能不能优化一点/能不能考虑用户服务器承受能力???

目前懒的研究优化,将其暂时注释掉去掉排行功能,省的服务器老是挂......
回复

使用道具 举报

纽币 发表于 2009-12-8 13:32:17 | 显示全部楼层
你看得懂就改改吧,还有好多伸手党等着呢。
回复

使用道具 举报

 楼主| liuzhly 发表于 2009-12-8 14:44:29 | 显示全部楼层
懒得动了,程序不是我写的,给高手们一个思路:

假如优化不好的话,可以考虑使用缓存,比如:

生成一个HTML,系统定时1小时更新一下排行,如果在一小时之内,排行使用目前生成的缓存文件,如果超过一个小时,那么自动更新...

另外,排行啥的可以去掉,只保留TOP也可...
回复

使用道具 举报

小草的味道 发表于 2009-12-9 20:59:34 | 显示全部楼层
我装了农场后,系统也不定时的假死了
回复

使用道具 举报

45578800 发表于 2009-12-9 21:16:06 | 显示全部楼层
00000000000000000
回复

使用道具 举报

daymake 发表于 2009-12-9 21:30:13 | 显示全部楼层
不错,支持了
回复

使用道具 举报

scckfzx 发表于 2009-12-9 21:53:11 | 显示全部楼层
打开UCHOME的调试模式,看看到底是哪个SQL查询消耗资源厉害
回复

使用道具 举报

小草的味道 发表于 2009-12-13 21:25:19 | 显示全部楼层
具体怎么打开调试模式
回复

使用道具 举报

无-痕 发表于 2009-12-13 21:28:55 | 显示全部楼层
不懂代码~~~~~~~~~~
回复

使用道具 举报

MFyoyo.. 发表于 2009-12-13 22:13:51 | 显示全部楼层
最好别使用子查询
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2025-10-23 12:23 , Processed in 0.105848 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表