http://blog.joycode.com/mvm/archive/2004/10/26/36614.aspx

解决方案 »

  1.   

    1) mysql 的全文索引不支持中文, 所以你设了全文索引也没用.
    2) 不明白你这句 sql 为什么用 group by 而不是 order by.要提高速度, 只能把记录内容中的一些关键字合在一起用逗号连接并单独存为一个字段. 查询的时候用 FIND_IN_SET 函数.
      

  2.   

    按道理说即使用 LIKE 也不会这么慢.我以前的数据量是百万数量级的 Text 类型, 用 LIKE 搜索也就 2, 3 秒钟.
      

  3.   

    看漏了, 你这里有个 sum, 这样一来计算和 group by 的开销也是很大的.
      

  4.   

    我换成name LIKE '北京%',去掉前面那个%,速度快了很多,大概在0.08秒就处理完成。我想还是因为是没有用到索引把。另外请问sql中如果有group by和order by,那样还会用到索引吗?
      

  5.   

    想到一种方法,试了一下,还觉得比较可行。我把所有的pname开头都加了一个abc,查询的时候pname like 'abc%北京%',这样找到的结果是一样的,而且也用到了索引。大家觉得这种方法有没有什么问题,是否可行?