|
由于前段时间MYSQL服务器的并发连接老是突然增加,然后导致服务器崩溃~~这个星期花下狠功夫在数据库服务分流,MYSQL配置,PHP程序方面做了不少的检查和优化,感觉效果确实比以前好多了~~唯一有一点不满意的就是类似于下面的查询:
[code:1]
SELECT a.music_id,a.music_name_c,a.music_name_e,b.person_id,b.person_name_c,b.person_name_e
FROM musicinfo a LEFT JOIN personinfo b ON a.person_id=b.person_id
WHERE (a.music_name_c LIKE '%$keyword%')
OR (a.music_name_e LIKE '%$keyword%')
OR (b.person_name_c LIKE '%$keyword%')
OR (b.person_name_e LIKE '%$keyword%')
LIMIT 0,40
[/code:1]
其中,在musicinfo这个表中,有近10万条数据,music_id是主键,person_id是索引。在personinfo表中,有近5000条数据,person_id是主键。
但我用了LIKE '%%'这样的不完全匹配搜索,大家清楚,在music_name_c等列上就是做了索引也是没有用的~~一个像这样的查询,在MYSQL并发连接很大的情况,至少是要花上数秒才能运行完成的~~这样就会导致PHP的脚本运行时间加长~~大家有没有什么办法可以优化呢? |
|