问题描述:
环境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的表分区
请高手指点一条明路分不够再加。
环境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的表分区
请高手指点一条明路分不够再加。
where zhulei like '1,1%' or fulei like '%|1,1%'
增加新闻-副类关系表(多个副类多条记录)
新闻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、副类字段都需要索引