SQL随机查询一条记录并对其中一个字段修改值然后输出查询到的这条数据

SQL查询表中一条记录并对其中一个字段值进行修改,然后输出查询到的这条数据表中字段:ID(自增量),题目,状态现在使用的是3条语句来进行操作declare@intint1... SQL查询表中一条记录并对其中一个字段值进行修改,然后输出查询到的这条数据
表中字段: ID(自增量),题目,状态
现在使用的是3条语句来进行操作

declare @int int
1:查询, set @sql='SELECT @int= ID from '+@id+' where 状态=1'
exec sp_executesql @sql,N'@int bigint output',@int output
(状态1代表查询一条没有被查询过的题目,如果状态值为2则代表查询过)
2:修改,
set @sql='update '+@id+' set 状态=2 where ID='+ CAST(@int as varchar)
exec(@sql)
3:在次查询输出
set @sql='select ID,题目,状态 from '+@id+' where ID='+ CAST(@int as varchar)
exec(@sql)

现在的情况是:10个同时查询请求时查询只需要0.1秒,但是当100个人或者1000人同时请求则要十秒或更多,小弟请教各位大神如何优化能提高查询速度,更换硬件除外(硬件:WIN2003 X64,CPU 至强5645*2,内存 16G,三星固态硬盘读写520M/s)
或者3条语句是否能合并一条以提高查询速度
或是使用此条语句如何能达到上面3条语句的效果:

select top 1 ID ,题目,状态 , NewID()as random from yyy_ml where 状态=1 order by random
满意者加分,谢谢
展开
 我来答
鲜美还清湛灬白桦N
2014-04-06 · TA获得超过620个赞
知道小有建树答主
回答量:404
采纳率:50%
帮助的人:526万
展开全部
--你是要随机在yyy_ml这个表中取状态=1的一条记录并更新该记录的状态为2么?(sql2005或以上版本)
With T
As
(
Select Top 1 * From yyy_ml Where 状态=1 Order by newid()
)
Update T Set 状态=2
Output inserted.id,inserted.题目
追问
请问下我是在存储过程中使用,那么表名使用变量替换时提示未申明变量,另外这种写法如何输出到网页呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式