详细说一下 A表 字段名称 说明 类型 主键 hy_id 会员ID Vc(50) 是 hy_name 会员名称 Vc(50) 否 hy_dj 会员等级 Vc(50) 否 cx_dj 诚信等级 int(5) 否 note 备注 Vc(50) 否 ...........此表三万条数据 B表 字段名称 说明 类型 主键 forum_id 贴子ID bigint(20) 是 hy_id 会员ID Vc(50) 否 title 标题 Vc(50) 否 content 内容 text 否 forum_date 日期 bigint(20) 否 fb_bs 发布标识 Vc(50) 否 hf_id 回复ID bigint(20) 否 ........ 此表有二十万条数据 此表建立索引有:hy_id, hf_id,title,content现在的查询的语句是: select forum_id,title,forum_date,b.hy_id,hy_name,cx_dj from b left join a on a.hy_id=b.hy_id where fb_bs='Y' and hf_id=0 and qq like '%" + value + "%'现在查询时间得二十秒,在计算分页之类的,合计得三十多秒!! 网站为:http://gq.51ey.com 进入后点击热门搜索的任一链接都可以测试,非常慢,接受不了! 其它数据库查询还可以接受!! 运行平台:tomcat+jsp+mysql,数据库连接方式用是连接池 现求解决方案,提高查询效率!!在此谢谢大家了如果有良好的解决方案,可以付费 联系方式:QQ 508367251 MSN [email protected]
更正一下代码,运行的语句为:select forum_id,title,forum_date,b.hy_id,hy_name,cx_dj from b left join a on a.hy_id=b.hy_id where fb_bs='Y' and hf_id=0 and content like '%" + value + "%'
修改你的sql语句,b.hy_id和a.hy_id相等就用下面的语句: select forum_id,title,forum_date,a.hy_id,hy_name,cx_dj from b left join a on a.hy_id=b.hy_id where fb_bs='Y' and hf_id=0 and content like '%" + value + "%' 既然必须用like '%关键字%' ,就只能尽量从其他where条件方面优化 1>select 中的字段顺序按原来数据表中的顺序来写,有利于速度 2>对fb_bs,hf_id分别建立索引,优化检索时间 3>如果hy_id字段没有建索引,就也加上索引
http://dev.mysql.com/doc/refman/5.1/zh/functions.html#fulltext-search
like '%关键字%'想办法换成
like '关键字%'
必须要求是like '%关键字%',我也知道这样不优化,但是需求就是如此,还有没有其它方式解决方案了
A表
字段名称 说明 类型 主键
hy_id 会员ID Vc(50) 是
hy_name 会员名称 Vc(50) 否
hy_dj 会员等级 Vc(50) 否
cx_dj 诚信等级 int(5) 否
note 备注 Vc(50) 否
...........此表三万条数据
B表
字段名称 说明 类型 主键
forum_id 贴子ID bigint(20) 是
hy_id 会员ID Vc(50) 否
title 标题 Vc(50) 否
content 内容 text 否
forum_date 日期 bigint(20) 否
fb_bs 发布标识 Vc(50) 否
hf_id 回复ID bigint(20) 否
........
此表有二十万条数据
此表建立索引有:hy_id, hf_id,title,content现在的查询的语句是:
select forum_id,title,forum_date,b.hy_id,hy_name,cx_dj from b left join a on a.hy_id=b.hy_id where fb_bs='Y' and hf_id=0 and qq like '%" + value + "%'现在查询时间得二十秒,在计算分页之类的,合计得三十多秒!!
网站为:http://gq.51ey.com 进入后点击热门搜索的任一链接都可以测试,非常慢,接受不了!
其它数据库查询还可以接受!!
运行平台:tomcat+jsp+mysql,数据库连接方式用是连接池
现求解决方案,提高查询效率!!在此谢谢大家了如果有良好的解决方案,可以付费
联系方式:QQ 508367251 MSN [email protected]
LIKE本来速度就慢,QQ是哪个表的?
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
现在还没有解决方案,我用INSTR也没有提高速度!
select forum_id,title,forum_date,a.hy_id,hy_name,cx_dj
from b left join a on a.hy_id=b.hy_id
where fb_bs='Y' and hf_id=0 and content like '%" + value + "%' 既然必须用like '%关键字%' ,就只能尽量从其他where条件方面优化
1>select 中的字段顺序按原来数据表中的顺序来写,有利于速度
2>对fb_bs,hf_id分别建立索引,优化检索时间
3>如果hy_id字段没有建索引,就也加上索引
本身字符串比较就是很消耗数据资源的运算,即使你建立了索引。对于大字段(text)
比较对比速度也是很慢的。你可以根据下一些思路尝试解决问题:
1 增加缓存表或者影相表,存储一些常用记录
2 为查询次数比较多的关键字,建立短途查询(像Google 那样的搜索引擎)
不知道高手们还有什么方案