提交文章的Bug修改- -| 回首页 | 2004年索引 | - -四月份写的JavaScript验证客户端提交数据的小程序

8.2-8.8工作总结备份- -

                                      

8.2-8.8
一、8月3日,因blog.blogchina.com首页SQL查询存在效率问题,取消首页Blog人气排行、文章访问/回复排行等功能。
二、博客论坛首页,仿Yahoo版,http://forum.blogchina.com/protal/portal.php,耗时两天(4-5日)
三、博客论坛首页,改进博客公社版,文件现已删除,耗时两天(6-7日)
四、博客论坛首页,subSilver基础上改进版(8日)
五、2日干嘛去忘了,生成添加路由的命令?好像只有几分钟就搞定了,不算吧。

技术备忘:
1.SQL查询优化,把论坛板块分为科技新知生活三类,每类约20-22个版面,从中搜索最新活动的主题的SQL语句:
(1) select ... from phpbb_forums f, phpbb_topics t where f.forum_id = 20 or f.forum_id = 22 or f.forum_id = 37 or ... and f.forum_last_post_id = t.topic_last_post_id
(2) select ... from phpbb_forums f, phpbb_topics t where ( f.forum_id = 20 or f.forum_id = 22 or f.forum_id = 37 or ... ) and f.forum_last_post_id = t.topic_last_post_id
(1) select ... from phpbb_forums f, phpbb_topics t where f.forum_last_post_id = t.topic_last_post_id and ( f.forum_id = 20 or f.forum_id = 22 or f.forum_id = 37 or ... )其中其中,的一种写法是错的,因为and的优先级高于or运算,所以,查询结果上万条,耗时比较长,最终执行的语句实际上是:
select ... from phpbb_forums f, phpbb_topics t where f.forum_id = 20 or f.forum_id = 22 or f.forum_id = 37 or ...or ( f.forum_id=12 and f.forum_last_post_id = t.topic_last_post_id )

第三种写法是低效的,它先执行Join操作,后执行筛选操作,尽管在只制定三个版面ID的时候,这个语句耗时仅0.03秒,但,当指定6个版面ID的时候,耗时达0.1秒,疑前时间数据受缓存影响。

第二种写法是最优的,在执行连接操作之前从被连接的表中筛选尽范围可能小的数据记录,指定3-12个版面ID时,耗时均为0.05秒。

至于左连接和右连接,此处不作区分,也不详述。

2.distinct 在MySQL中只有一个实在的用途,那就是和count操作一起执行,否则几乎没有过滤的效果(select distinct col1 from tbl1当然有效,可是几乎没用,谁会只要一个列来distinct?),这和MS SQL大不相同。

3.弄清了phpBB自带的模板引擎的工作机理。



- 作者: 覃健祥 2004年08月9日, 星期一 10:45 加入博采

Trackback

你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=41155

回复

评论内容: