读书人

c# 优化SQL语句还是优化程序代码,该如

发布时间: 2012-06-03 16:59:40 作者: rapoo

c# 优化SQL语句还是优化程序代码
现在项目中遇到这样一个问题,
现有这样一个表A,记录如下
ordID,RowNo,BatchID
A0001 0 1
A0001 1 1
A0001 2 2
A0001 3 3
A0002 0 1

在网上通过这样的语句
stuff((SELECT ','+BATCHID FROM biw02013 WHERE biw02013.ORDID=A.ORDID FOR XML PATH('')),1,1,'') BatchId
使得满足这样的查询效果
AOOO1 1,1,2,3
A0002 1
但是发现这样的话数据库查询时间相对要慢一些
我想如果通过程序代码循环取的ordID,然后根据ordID到表A(ordID,RowNo为主键)中取出BatchID,处理后再显示
我想问一下这两种方式那个效果更好点

[解决办法]
这个要调试过才能确定,后一种方法要多次访问数据库,I/O操作多了
[解决办法]
其实有时间 还是2个都优化好,但如果非要选个,还是选择程序代码吧
[解决办法]
建个函数试试,对ordID建立索引

SQL code
create function GetString(@ordID varchar(20))returns varchar(1000)asbegin    declare @temp varchar(1000)    set @temp=''    select @temp = @temp+','+convert(varchar(50),BatchID) from Temp where ordID=@ordID    return stuff(@temp,1,1,'')endselect ordID,dbo.GetString(ordID) from Temp group by ordID
[解决办法]
循环取到所有的ordID和RowNo,然后拼成一个SQL,一次性访问数据库,当然表建立索引,会快很多

读书人网 >C#

热点推荐