引用 | 编辑
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 |