个人觉得就这种表设计而言,没有什么好优化的了,都是要全表扫描.改表结构反而是最好的选择. 
如果表结构不能改,数据的变化少比较少的话,可以考虑增加一个辅助表,辅助表中保存的是分拆后的数据,用触发器来维护这个辅助表与原表的数据同步.统计的时候从辅助表统计.

解决方案 »

  1.   

    用全文检索对于这个统计处理来说,比较不现实,全文检索是要把categories保存为文件,然后调用操作系统的全文检索引擎进行处理,最后把检索结果交回给数据库
    所以效率上可能差过like(毕竟人的categories字段数据不会是几十K上M吧? 较少的数据用like扫描好得多)而且全文检索在数据变化后不会及时填充全文检索数据,也就意味着全文检索的结果有一定的滞后性,可能会导致统计结果出错.