織夢(mèng)(dedecms)文章太多,速度越來(lái)越慢的解決辦法
優(yōu)采云 發(fā)布時(shí)間: 2016-11-22 15:46
今天又有朋友遇到這個(gè)問(wèn)題,想通過(guò)分表來(lái)解決,但是在我看來(lái)這是治標不治本的,而且效果可能不怎么好。
?
根據我個(gè)人經(jīng)驗,推薦通過(guò)增加數據庫索引來(lái)解決,一勞永逸。做法如下:
?
1. 登錄phpmyadmin進(jìn)入數據庫,找到archives這個(gè)表。(這里用來(lái)舉例的數據庫前綴是‘lw’,數據表名即為lw_archives)
?
2. 進(jìn)入lw_archives這個(gè)表,點(diǎn)擊下圖所示的“快速編輯”按鈕,顯示出命令輸入框。
?
3. 用來(lái)添加索引的sql語(yǔ)句是這樣的:
執行后,click這個(gè)字段的索引就建好了。
?
4. 怎么查看這個(gè)表都建了哪些索引?語(yǔ)句如下:
?以上解決的是sql語(yǔ)句的問(wèn)題,那么什么樣的字段應該建立索引?可以所有字段都建索引嗎?
? ? 答:索引可以加速查詢(xún)(“讀”操作),但是會(huì )拖累更新(“寫(xiě)”操作),所以通常只針對需要大量查詢(xún)的字段建立索引。這里的查詢(xún),包括“查找”和“排序”,也就是sql里面的where和order子句。
? ? 比如,我們經(jīng)常會(huì )在模板中調用最新文章,這里就涉及一個(gè)排序,按文章生成時(shí)間排序,所以應該找到代表文章生成時(shí)間的那個(gè)字段,添加索引,之后調用最新文章就會(huì )明顯變快。
? ? 在織夢(mèng)中,sortrank、pubdate、senddate都代表文章生成時(shí)間(個(gè)人理解,如果有誤,請拍磚),我是把這三個(gè)都做了索引的。
? ? 另外,click字段,表示點(diǎn)擊量或者叫瀏覽量,通常調用最熱文章會(huì )用到,一般也推薦建立索引。
? ? 如有其它字段需要建索引,同理即可。
?
需要強調的是,模板中盡量不要使用隨機排序(orderby=‘rand’)這種,它會(huì )放棄索引,導致速度奇慢無(wú)比。
?
數據庫博大精深,在此拋磚引玉,若有更好的見(jiàn)解,共同討論,共同進(jìn)步。
?
參考資料:http://www.cnblogs.com/cy163/archive/2008/10/27/1320798.html
?
另:
? ? 在寫(xiě)給站長(cháng)新人的一封信,關(guān)于采集與優(yōu)化中有提到關(guān)于“文章比較多,網(wǎng)站已經(jīng)開(kāi)啟靜態(tài),但是每次全站更新都要花很長(cháng)時(shí)間怎么辦?”通過(guò)二次開(kāi)發(fā)修改程序解決,此方法不限于織夢(mèng),其他內容管理系統一樣適用。
?
根據我個(gè)人經(jīng)驗,推薦通過(guò)增加數據庫索引來(lái)解決,一勞永逸。做法如下:
?
1. 登錄phpmyadmin進(jìn)入數據庫,找到archives這個(gè)表。(這里用來(lái)舉例的數據庫前綴是‘lw’,數據表名即為lw_archives)
?
2. 進(jìn)入lw_archives這個(gè)表,點(diǎn)擊下圖所示的“快速編輯”按鈕,顯示出命令輸入框。
?
3. 用來(lái)添加索引的sql語(yǔ)句是這樣的:
CREATE INDEX index_name ON table_name (column_name)
/*
index_name 索引名,可以任意取名,為了以后自己還能看懂,推薦直接用列名
table_name 表名
column_name 列名,即字段名
*/
比如,要為‘click’這個(gè)字段添加索引,sql語(yǔ)句為CREATE INDEX click ON lw_archives (click)
執行后,click這個(gè)字段的索引就建好了。
?
4. 怎么查看這個(gè)表都建了哪些索引?語(yǔ)句如下:
SHOW INDEX FROM 表名
5. 索引建錯了,要刪除怎么辦?DROP index 索引名 ON 表名
?以上解決的是sql語(yǔ)句的問(wèn)題,那么什么樣的字段應該建立索引?可以所有字段都建索引嗎?
? ? 答:索引可以加速查詢(xún)(“讀”操作),但是會(huì )拖累更新(“寫(xiě)”操作),所以通常只針對需要大量查詢(xún)的字段建立索引。這里的查詢(xún),包括“查找”和“排序”,也就是sql里面的where和order子句。
? ? 比如,我們經(jīng)常會(huì )在模板中調用最新文章,這里就涉及一個(gè)排序,按文章生成時(shí)間排序,所以應該找到代表文章生成時(shí)間的那個(gè)字段,添加索引,之后調用最新文章就會(huì )明顯變快。
? ? 在織夢(mèng)中,sortrank、pubdate、senddate都代表文章生成時(shí)間(個(gè)人理解,如果有誤,請拍磚),我是把這三個(gè)都做了索引的。
? ? 另外,click字段,表示點(diǎn)擊量或者叫瀏覽量,通常調用最熱文章會(huì )用到,一般也推薦建立索引。
? ? 如有其它字段需要建索引,同理即可。
?
需要強調的是,模板中盡量不要使用隨機排序(orderby=‘rand’)這種,它會(huì )放棄索引,導致速度奇慢無(wú)比。
?
數據庫博大精深,在此拋磚引玉,若有更好的見(jiàn)解,共同討論,共同進(jìn)步。
?
參考資料:http://www.cnblogs.com/cy163/archive/2008/10/27/1320798.html
?
另:
? ? 在寫(xiě)給站長(cháng)新人的一封信,關(guān)于采集與優(yōu)化中有提到關(guān)于“文章比較多,網(wǎng)站已經(jīng)開(kāi)啟靜態(tài),但是每次全站更新都要花很長(cháng)時(shí)間怎么辦?”通過(guò)二次開(kāi)發(fā)修改程序解決,此方法不限于織夢(mèng),其他內容管理系統一樣適用。
1 個(gè)評論
DEDE采集后發(fā)布的文章標題好像都帶著(zhù)關(guān)鍵詞,也就是標題的結構是:關(guān)鍵詞+原文章標題,這樣很容易讓關(guān)鍵詞超標啊。