100个网站,每个网站有500部小说,每部小说500个章节,共约25,000,000条数据。而我要查询某一部小说的全部章节内容,就要去查遍整个数据库的25,000,000条数据,太慢!太慢!怎么办?
初步打算:每部小说建一个表,共建500个表,搜索时,直接搜索该表(分开后每个表越5万条记录)。
高手们,有其他的好办法吗?

解决方案 »

  1.   

    这个不大,直接一个小说表,一个章节内容表,在内容表的小说id上建立索引,查询根据id查,应该很快的
      

  2.   

    小说的章节分布不要太那么散乱么,一部小说的章节基本在一块就好了。
    根据小说的ID基本大致可以确定章节ID的范围的话就明显可以缩小查询范围了,如果给ID加上索引的话应该会很快。另外,数据库支持分区么,分区就更好了,一部小说分一个区
      

  3.   

    数据不算大。但必须要建索引,针对你要查的字段建立索引。还有就是优化。向like,函数之类的东西不要用。在表与表之间的连接要在where之前搞定,    关于更多优化 看看这里吧http://hi.baidu.com/shenwenchao1/blog/item/1f8e14dda5f657abcc1166d2.html
      

  4.   

    用lucene全文检索会不会快一点?
      

  5.   

    2500w不算大。
    另外搞不懂为什么100个网站也要加进来?
    网站与小说应该是N->N的一个关联。查小说应该只找小说ID及所有章节ID就完,25W的查询
      

  6.   

    想什么呢小说有小说表,章有章表,你的数据库怎么设计的
    再说正如楼上说的,你就算全部弄到一张表里面来,select出来也不会像你描述的那么慢,除非你用了夸张的修辞手法
    把你查询的方式列出来吧
      

  7.   

    章节表那多存一个小说的id 然后建立索引create index 章节_index on 章节(小说id)
      

  8.   

    查询书的章节内容,意味着你需要做全文检索,那直接通过数据检索必须是死路一条。就算你分解成500个表也不会解决问题。应该用专业搜索引擎来解决此类问题,lucene就是其中一个非常优秀的开源搜索引擎。配合你适当业务的分解,可实现非常理想的搜索效果。