首页 新闻 会员 周边 捐助

求高手指教 提高mysql查询速度问题 有explain结果

0
悬赏园豆:50 [已解决问题] 解决于 2014-03-05 14:09

sql语句:第一个是常规查询,第二个是title搜索,下面有这个两个表的详细情况,求高手指出如何优化这两张表。 最后附有explain查询结果。5000条数据的时候  这样的结构还能很快,但是到5w条的时候,查询的速度就太慢了。求优化。

SELECT * FROM internetinfosend as iis LEFT JOIN internetinfo as ii ON iis.iid=ii.iid where (iis.sendunit in(1000) or iis.receiveunit in(1000) or (ii.useinfo>0 and ii.open=1 and ii.childunit LIKE '%1000,%' )) group by iis.iid

SELECT * FROM internetinfosend as iis LEFT JOIN internetinfo as ii ON iis.iid=ii.iid where iis.sid>1 AND ii.useinfo= '2' AND ii.keyword= '3' and ( ii.title LIKE'%测试%' ) group by iis.iid

 

internetinfo  表结构

索引情况:

internetinfosend  表索引和结构

第一个sql的explain查询结果:

第二个sql的 explain 查询结果:

min_cj的主页 min_cj | 初学一级 | 园豆:157
提问于:2014-03-04 17:19
< >
分享
最佳答案
0

可以优化的地方有

1、尽量不适用LEFT JOIN,这个可以有。

2、LIKE如果你是为了用户友好,考虑一下性能不好,也会造成用户不友好,想想有没有替代方法。

3、换一个高性能点的服务器。(内存、CPU、硬盘升级之类)

4、换一个高性能点的数据库引擎。

收获园豆:50
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-03-04 23:27

第一个 我可以试试

第二条   like是按标题搜索的 查询语句,好像也不能优化吧,我在考虑是不是需要用 中文分词做 ,然后查询的速度应该会快点。

第三条  我是无能为力的

第四条 我先的数据库 引擎是 innodb ,我也考虑是不是换成 myisam ,然后给标题加一个  中文索引,好像不支持中文全文索引吧,纠结呢!用MySQL中文全文索引插件 这样是不是能提高点速度呢?

我跟新了问题,加了一点,麻烦你再看下

请指教

min_cj | 园豆:157 (初学一级) | 2014-03-05 09:21
其他回答(1)
0

不要想了.你都like了还优化个毛啊```

吴瑞祥 | 园豆:29449 (高人七级) | 2014-03-04 18:47

我也纠结呢--这是 按标题搜索的sql语句 ,还能用啥呢--

支持(0) 反对(0) min_cj | 园豆:157 (初学一级) | 2014-03-05 09:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册