weixin_42396603 2010-09-07 18:30
浏览 756
已采纳

关于一条新闻属于多个分类的数据库设计解决办法,like太慢。

我有一个新闻表,里面有一个字段catalog,里面存放新闻所属的多个分类,例如01,03,05。

那么我在显示分类为01的新闻时sql语句应当这么写:select title from news where catalog like '%03,%'。

但当数据量有几十万条时,查询速度会慢一些,如果我按F5刷页面,不到一分钟,数据库服务器的CPU就高达100%。

请问大家是怎么处理这样的问题的?优化SQL,这觉得这个好像行不通,还是在数据库设计上作一下改善。

目前在作门户,困扰我很长时间了,谢谢大家的帮助。

  • 写回答

5条回答 默认 最新

  • xieye114 2010-09-08 11:01
    关注

    新闻分类表:news_catalog
    新闻分类表字段:news_id,catalog
    新闻表:news
    新闻表字段:id,title 。。。。
    记住要给news_catalog的news_id字段加索引

    select news.*
    from news
    where exists(
    select 1 from news_catalog
    where news_catalog.news_id = news.id
    and news_catalog.catalog = 2
    )

    2就是一个分类
    查找类型为2的所有新闻

    =====================

    select news.*
    from news
    where exists(
    select 1 from news_catalog
    where news_catalog.news_id = news.id
    and news_catalog.catalog in (2,3)
    )
    查找类型为2或者3的所有新闻

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突