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 查询结果:
可以优化的地方有
1、尽量不适用LEFT JOIN,这个可以有。
2、LIKE如果你是为了用户友好,考虑一下性能不好,也会造成用户不友好,想想有没有替代方法。
3、换一个高性能点的服务器。(内存、CPU、硬盘升级之类)
4、换一个高性能点的数据库引擎。
第一个 我可以试试
第二条 like是按标题搜索的 查询语句,好像也不能优化吧,我在考虑是不是需要用 中文分词做 ,然后查询的速度应该会快点。
第三条 我是无能为力的
第四条 我先的数据库 引擎是 innodb ,我也考虑是不是换成 myisam ,然后给标题加一个 中文索引,好像不支持中文全文索引吧,纠结呢!用MySQL中文全文索引插件 这样是不是能提高点速度呢?
我跟新了问题,加了一点,麻烦你再看下
请指教
不要想了.你都like了还优化个毛啊```
我也纠结呢--这是 按标题搜索的sql语句 ,还能用啥呢--