- 论坛徽章:
- 0
|
mysql 3.23
目前有一个company表,内有company_id字段 int,autoincreamt,company_name字段,varchar(100),放的都是公司名称,还有一些企业相关信息。
有一个搜索需要对company_name进行模糊查找
目前数据在1500万条左右,搜索速度已经极慢,客户端是用php实现
未来数据估计在5000万条左右
想问一下大家有没有比较好的优化IDEA,让这个搜索时间上稍微可以接受一点。
还有两个疑惑的地方,给出两个语句mysql 语句如下
- "select * from company where company_name like '%".$keyword."%' limit 0,10"
复制代码
- "select * from company where company_name like '%".$keyword."%' limit 1000,10"
复制代码
只是一个limit的开始记录不同,但是这两句话通过PHP在浏览器中执行,其性能差异太惊人了。。前后要相差10秒左右
也许我理解不对,根据explain 出来来看,两句语句同时都历遍了整个表,也就是说,limit参数只是对输出作出了限制,并不对搜索有任何影响。
但从两句语句的表现来看,我个人认为,mysql的输出是不是如果limit 0,10 就是10条进入了内存,然后输出
而limit 1000,10 就必须要1000条先进入内存,然后在输出其后的10条,不知道有没有比较理解MYSQL机制的同学帮我解释以下
问题二
索引问题,对于COMPANY_NAME这样的字段,即一般存放中文的字段,索引是不是没有必要的?
尤其是中文一般用来模糊查找的时候,目前我的表是加了索引,但感觉去掉索引之后搜索速度是差不多的
想知道对于中文的搜索是如何进行的,先转成什么形式进行比较呢? 如果用字母是不是转成ASC2,那中文呢
转成什么?
谢谢,以上问题判断有知道的同学指点指点我,刚学MYSQL,懂的太少 |
|