问题描述:
环境ASP。NET +MSSQLERVER 2000+WINDOWS2003(32BIT)新闻类别表:需要无限级分类,采用的是 1,2,3,1 的格式,例如:
新闻中心1 
国内新闻 1,1
国际新闻 1,2国内娱乐新闻 1,1,1
国内军事新闻 1,1,2
国内IT新闻   1,1,3
...
...
...新闻表,需要一条新闻有一个主类,同时可能属于若干其他类(副类),因此,添加两个字段,zhulei,fulei
主类保存格式如 1,1,2
副类保存格式如 |1,1,1|1,1,2|1,1,3|
如果要查询国内新闻,SQL如下:
select * from news where zhulei='1,1' or zhulei like '1,1,%' or fulei like '%|1,1|%' or fulei like '%|1,1|,'
问题表现:现在news记录数为50W,上述语句执行时间为15秒左右,但首页上这种模块有好多个,导致首页生成缓慢,甚至超时。寻求帮助:有人说将数据库升级为SQLSERVER2005/2008会好些,采用2005/2008的表分区
请高手指点一条明路分不够再加。

解决方案 »

  1.   

    select * from news 
    where zhulei like '1,1%' or fulei like '%|1,1%' 
      

  2.   

    新闻表,就一个ID、内容、主类别
    增加新闻-副类关系表(多个副类多条记录)
    新闻ID,副类查询:
    select a.* from news a
    where zhulei='1,1' 
    or zhulei like '1,1,%' 
    or exists (
       select 1 from 新闻-副类关系表
       where 新闻ID = a.新闻ID
       and 副类 = '1,1' 
       or 副类 like '1,1,%' 
       )
    在zhulei、副类字段都需要索引