织梦(dedecms)文章太多,速度越来越慢的解决办法
优采云 发布时间: 2016-11-22 15:46
今天又有朋友遇到这个问题,想通过分表来解决,但是在我看来这是治标不治本的,而且效果可能不怎么好。
根据我个人经验,推荐通过增加数据库索引来解决,一劳永逸。做法如下:
1. 登录phpmyadmin进入数据库,找到archives这个表。(这里用来举例的数据库前缀是‘lw’,数据表名即为lw_archives)
2. 进入lw_archives这个表,点击下图所示的“快速编辑”按钮,显示出命令输入框。
3. 用来添加索引的sql语句是这样的:
执行后,click这个字段的索引就建好了。
4. 怎么查看这个表都建了哪些索引?语句如下:
以上解决的是sql语句的问题,那么什么样的字段应该建立索引?可以所有字段都建索引吗?
答:索引可以加速查询(“读”操作),但是会拖累更新(“写”操作),所以通常只针对需要大量查询的字段建立索引。这里的查询,包括“查找”和“排序”,也就是sql里面的where和order子句。
比如,我们经常会在模板中调用最新文章,这里就涉及一个排序,按文章生成时间排序,所以应该找到代表文章生成时间的那个字段,添加索引,之后调用最新文章就会明显变快。
在织梦中,sortrank、pubdate、senddate都代表文章生成时间(个人理解,如果有误,请拍砖),我是把这三个都做了索引的。
另外,click字段,表示点击量或者叫浏览量,通常调用最热文章会用到,一般也推荐建立索引。
如有其它字段需要建索引,同理即可。
需要强调的是,模板中尽量不要使用随机排序(orderby=‘rand’)这种,它会放弃索引,导致速度奇慢无比。
数据库博大精深,在此抛砖引玉,若有更好的见解,共同讨论,共同进步。
参考资料:http://www.cnblogs.com/cy163/archive/2008/10/27/1320798.html
另:
在写给站长新人的一封信,关于采集与优化中有提到关于“文章比较多,网站已经开启静态,但是每次全站更新都要花很长时间怎么办?”通过二次开发修改程序解决,此方法不限于织梦,其他内容管理系统一样适用。
根据我个人经验,推荐通过增加数据库索引来解决,一劳永逸。做法如下:
1. 登录phpmyadmin进入数据库,找到archives这个表。(这里用来举例的数据库前缀是‘lw’,数据表名即为lw_archives)
2. 进入lw_archives这个表,点击下图所示的“快速编辑”按钮,显示出命令输入框。
3. 用来添加索引的sql语句是这样的:
CREATE INDEX index_name ON table_name (column_name)
/*
index_name 索引名,可以任意取名,为了以后自己还能看懂,推荐直接用列名
table_name 表名
column_name 列名,即字段名
*/
比如,要为‘click’这个字段添加索引,sql语句为CREATE INDEX click ON lw_archives (click)
执行后,click这个字段的索引就建好了。
4. 怎么查看这个表都建了哪些索引?语句如下:
SHOW INDEX FROM 表名
5. 索引建错了,要删除怎么办?DROP index 索引名 ON 表名
以上解决的是sql语句的问题,那么什么样的字段应该建立索引?可以所有字段都建索引吗?
答:索引可以加速查询(“读”操作),但是会拖累更新(“写”操作),所以通常只针对需要大量查询的字段建立索引。这里的查询,包括“查找”和“排序”,也就是sql里面的where和order子句。
比如,我们经常会在模板中调用最新文章,这里就涉及一个排序,按文章生成时间排序,所以应该找到代表文章生成时间的那个字段,添加索引,之后调用最新文章就会明显变快。
在织梦中,sortrank、pubdate、senddate都代表文章生成时间(个人理解,如果有误,请拍砖),我是把这三个都做了索引的。
另外,click字段,表示点击量或者叫浏览量,通常调用最热文章会用到,一般也推荐建立索引。
如有其它字段需要建索引,同理即可。
需要强调的是,模板中尽量不要使用随机排序(orderby=‘rand’)这种,它会放弃索引,导致速度奇慢无比。
数据库博大精深,在此抛砖引玉,若有更好的见解,共同讨论,共同进步。
参考资料:http://www.cnblogs.com/cy163/archive/2008/10/27/1320798.html
另:
在写给站长新人的一封信,关于采集与优化中有提到关于“文章比较多,网站已经开启静态,但是每次全站更新都要花很长时间怎么办?”通过二次开发修改程序解决,此方法不限于织梦,其他内容管理系统一样适用。
1 个评论
DEDE采集后发布的文章标题好像都带着关键词,也就是标题的结构是:关键词+原文章标题,这样很容易让关键词超标啊。