一个信息发布系统,新闻表字段很多,news_id是主键,有索引,栏目号是外键,但是有些新闻会被其它栏目引用,有个字段记录了引用的栏目号,用符号隔开,查询一个栏目的内容时,则:
where (module_id=12 or modules like concat('%','12,','%'))除此之外,每条新闻可以指定可以浏览的角色,这些角色也是以','分隔放在一个字段中的,也需要以like方式查询。目前,新闻表近20万条记录,慢得不得了,请问这种情况我应该怎么设计?或者怎么做优化?谢谢!

解决方案 »

  1.   

    是不表设计有问题,是查询语句的效率低下造成。
    or like效率都很低的,用全文索引代替。
      

  2.   

    访问量数据量大的论坛肯定不能用like  会把整个网站拖垮的  搜索这块要单独做全文搜索的   
      

  3.   

    LIKE '%x%'这种查询无法利用普通索引优化,MYSQL只会进行全表扫描。
    一般可以使用全文索引。
      

  4.   

    感觉用like效率会低下,同上换全文索引