引用 | 編輯
aa
2008-08-28 10:34 |
樓主
▼ |
||
x0
最近把論壇轉換為 utf-8 ,並把 MySQL 升級為 5.1.26發現了一個奇怪的問題,就是在讀私人訊息時特別的慢,我本來以為是因為私人訊息的索引鍵是文字欄位造成的,所以就特別加了數字索引鍵,改了一以是有一點改善,不過在搜尋私人訊息時,一樣是變的很慢 後來發現一個奇怪的現象,就是如果搜尋結果超過二頁以上就很快,如果不滿一頁就很慢 我就試著把 LIMIT 的指令拿掉,竟然就變的很快,後來只好加上一個判斷,只要不滿一頁的就不加 LIMIT,而超過一頁的才加 這樣搜尋就變的一樣快了 複製程式 $query = $db->query("SELECT mid,msgfrom,msgto,msgfromid,msgtoid,ifnew,title,mdate FROM pw_msg WHERE msgtoid='$winduid' AND type='rebox' $sqlwhere ORDER BY mdate DESC".($count>$db_perpage?" LIMIT $start,$db_perpage":'')); 目前還不了解這個問題的原因,只能先這樣處理,而我找了一下全部的程式,有很多地方要改,看了都傻眼了.. x0
|
引用 | 編輯
aa
2008-08-29 15:25 |
1樓
▲ ▼ |
今天又發現了一個奇怪的問題
複製程式 SELECT ifnew FROM pw_msg WHERE msgtoid='$winduid' AND ifnew='1' AND type='rebox' ORDER BY mdate DESC LIMIT 1 以上這行要執行 8秒以上,本來以為是 LIMIT 的問題,後來把 LIMIT 拿掉,不過還是一樣,後來再把 ORDER BY mdate DESC,就不到 1秒完成,我確定有對 mdate 做 INDEX 其實這行只是要判斷有沒有新的訊息,所以後來我改了一下語法 複製程式 SELECT COUNT(*) AS msgcount FROM pw_msg WHERE msgtoid='$winduid' AND ifnew='1' AND type='rebox' 這樣可以達到相同的效果,而且速度恨快.. x0 |
引用 | 編輯
chris710908
2008-08-30 01:46 |
2樓
▲ ▼ |
之前轉換成功的時候~讀取私人訊息的確慢很多
不過現在都很快了~沒有感覺異樣,感謝aa站長的努力! 所以將big5轉成UTF-8的或升級到mysql 5 會產生很多問題嗎?還是說PW系統的複雜性所以才會這樣? x0 |
引用 | 編輯
aa
2008-08-31 18:11 |
3樓
▲ ▼ |
下面是引用chris710908於2008-08-30 01:46發表的 : 應該說把 big5 轉成 UTF-8 就會有很多問題,不管是那一套系統 而升級到 MySQL 5.1.x 又會遇到其他的問題,也許改換 MySQL 5.0.x 就沒那個問題 x0 |
引用 | 編輯
chris710908
2008-09-01 19:31 |
4樓
▲ ▼ |
所以若是以後要製作網頁
做好把網頁語系預設成utf-8嗎? 感覺很多許蓋功的問題都可以解決 不過如果語系改成utf-8~那資料庫mysql也要改成utf-8才能閱讀資料吧 感覺用很久big5的語法習慣了....要改成utf-8還需要有點勇氣 x0 |
引用 | 編輯
aa
2008-09-02 00:36 |
5樓
▲ ▼ |
下面是引用chris710908於2008-09-01 19:31發表的 : 如果是要架新的系統,當然就選 UTF-8 ,如果是舊系統,要轉,真的要有很大的勇氣 最近又發現一個 MySQL 5.1.26 問題,就是如果用 LIMIT 去抓指定的資料,如果過濾的資料是空的時,他會再用全表掃描一次,所以就造成 mysql 滿載,目前正為此問題所苦... x0 |
引用 | 編輯
月光
2008-09-02 02:43 |
6樓
▲ |
下面是引用chris710908於2008-09-01 19:31發表的 : 我論壇也下海了的確是需要很大的勇氣及役力而且Mysql版本不同碰到的問題都不相同...所以講真的轉換後我十分後悔因為UTF-8不但會造成流量變大,且由於big5每個中文字為2字元而utf-8為3字元因此很多項這類加格式後儲存 複製程式 a:2:{s:7:"options";a:8:{i:0;a:3:{i:0;s:12:"傳統傻瓜相機";i:1;i:0;i:2;a:0:{}}i:1;a:3:{i:0;s:12:"傳統單眼相機";i:1;i:0;i:2;a:0:{}}i:2;a:3:{i:0;s:22:"拍立得或隨拍即丟型相機";i:1;i:1;i:2;a:1:{i:1;s:8:"magic_aa";}}i:3;a:3:{i:0;s:12:"數位傻瓜相機";i:1;i:0;i:2;a:0:{}}i:4;a:3:{i:0;s:16:"數位半專業型相機";i:1;i:1;i:2;a:1:{i:1;s:8:"magic_aa";}}i:5;a:3:{i:0;s:12:"數位單眼相機";i:1;i:0;i:2;a:0:{}}i:6;a:3:{i:0;s:18:"手機 or DV附設相機";i:1;i:1;i:2;a:1:{i:0;s:8:"magic_aa";}}i:7;a:3:{i:0;s:31:"特殊尺寸相機《120或更古式相機》";i:1;i:0;i:2;a:0:{}}}s:8:"multiple";a:2:{i:0;s:1:"1";i:1;s:1:"8";}} 所以不建議輕易嘗試,不過還好我碰到的問題好像沒有aa老大來的多由於我論壇Mysql版本為4.0.27查了一些資料他是呼並不元全支援utf-8且沒有校隊編碼功能因此碰上php.ini開啟 ; Magic quotes for incoming GET/POST/Cookie data. magic_quotes_gpc = On 時Mysql會將\直接存進資料庫中所以很多文字都亂七八糟的所以我現在在 global.php 中的 Char_cv(); 接加上 $msg = stripslashes($msg); 來過濾多出來的 \ 就好了 x0 |