一个新闻系统,分类比较多,大大小小的分类有上千个
大概10来个1级类,100个子类,还有剩下的都是孙类
下面是一个存储过程
exec Select_News_List @PageIndex = 1, @PageSize = 40,
@StrWhere =
' (type_id IN (SELECT Type_ID FROM f_getNewsChild( 1)))'下面是自定义函数,用来取得分类CREATE function f_getNewsChild(@Type_ID VARCHAR(10))
returns @t table(Type_ID VARCHAR(10),Type_ParenetID VARCHAR(10),Level INT)
as
begin
declare @i int,@ret varchar(8000)
set @i = 1
insert into @t select Type_ID,Type_ParenetID,@i from T_News_Type where Type_ParenetID = @Type_ID
while @@rowcount<>0
begin
set @i = @i + 1
insert into @t
select
a.Type_ID,a.Type_ParenetID,@i
from
T_News_Type a,@t b
where
a.Type_ParenetID=b.Type_ID and b.Level = @i-1
end
return
end
数据大概有几十完条,但是每次查询的时候,速度都非常慢,请问上面的查询条件能否优化?谢谢
大概10来个1级类,100个子类,还有剩下的都是孙类
下面是一个存储过程
exec Select_News_List @PageIndex = 1, @PageSize = 40,
@StrWhere =
' (type_id IN (SELECT Type_ID FROM f_getNewsChild( 1)))'下面是自定义函数,用来取得分类CREATE function f_getNewsChild(@Type_ID VARCHAR(10))
returns @t table(Type_ID VARCHAR(10),Type_ParenetID VARCHAR(10),Level INT)
as
begin
declare @i int,@ret varchar(8000)
set @i = 1
insert into @t select Type_ID,Type_ParenetID,@i from T_News_Type where Type_ParenetID = @Type_ID
while @@rowcount<>0
begin
set @i = @i + 1
insert into @t
select
a.Type_ID,a.Type_ParenetID,@i
from
T_News_Type a,@t b
where
a.Type_ParenetID=b.Type_ID and b.Level = @i-1
end
return
end
数据大概有几十完条,但是每次查询的时候,速度都非常慢,请问上面的查询条件能否优化?谢谢
解决方案 »
- 如何在select语句中将varchar类型的字段C1转换为int类型?
- 数据库故障问题-FCB为能打开
- 50分问个简单问题
- 求助:VB连接SQL,更新数据库时,出现实时错误:‘3027’不能更新。数据库或对象是只读的 标识错误的点为:Data1.Recordset.AddNew
- 关于时间的判断
- VBA中:select语句中使用format函数,总是提示“format不是可识别的函数名”
- 在客户端保存表(update),但未改变任何数据,为何表触发器被触发?
- 关于sql的查询
- 求一条SQL语句~~急!
- 向高手请教一个有关创建WINDOWS98下SQL SERVER的ODBC遇到的问题.
- 这样的sql语句咋写?
- 请教大虾一个问题,谢谢
FROM f_getNewsChild(1) f_getNewsChild这个得到分类有108个,最多的有200多个分类现在新闻分类多半是3级类,有的只有2级现在新闻只有6万条,但是将来会增长的很快,估计每天都是几千几万的增加。