请教一个联合查询效率问题(SQL优化)

IDNCC 2009-04-14 01:57:44
这是我在查询分析器里面测试用的SQL 循环100次(1次返回的时间老是0或20毫秒不准)

select * from reply, ForumUser where reply.topicid = 123 and ForumUser.username = reply.replyUser order by reply.replyTime

在测试的10万数据库里 一共输出了30*100 行数据 返回时间是 2156毫秒

简单改写成存储过程后效率提高一倍...1076毫秒

我想弱弱的问一下 有没有更好的写法让他效率更高一些...个人觉得这样效率很一般 (上面的*是为了更加容易看实际是详细的列出各个字段)


--------------------------------------------------------
declare @begintime datetime,@endtime datetime
set @begintime = getdate()

declare @i int
set @i=1
while @i<=100 --循环次数
begin

select * from reply, ForumUser where reply.topicid = 123 and ForumUser.username = reply.replyUser order by reply.replyTime

set @i=@i+1
end

set @endtime = getdate()
select datediff(millisecond,@begintime,@endtime) costtime
---------------------------------------------------------
...全文
236 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
IDNCC 2009-04-14
  • 打赏
  • 举报
回复
= = 现在才发现CSDN美女怎么那么多啊!
小白_YY 2009-04-14
  • 打赏
  • 举报
回复
呵呵
IDNCC 2009-04-14
  • 打赏
  • 举报
回复
采纳1楼的建议

1. replyTime 上建了一个非聚集索引 提高.... 5%的速度... (- -!)
2. 仅仅查看一条语句的效率的话,这样做似乎没太大意义吧~ 这是论坛回复列表分页 效率高底很影响很明显的
3. 123改'123' 木有提高到效率

看看如果没有更强悍的答案就结了~
yygyogfny 2009-04-14
  • 打赏
  • 举报
回复
关注
IDNCC 2009-04-14
  • 打赏
  • 举报
回复
= = 我在自己写论坛...
you_tube 2009-04-14
  • 打赏
  • 举报
回复
将数字123
改成'123'
肥龙上天 2009-04-14
  • 打赏
  • 举报
回复
仅仅查看一条语句的效率的话,这样做似乎没太大意义吧~
肥龙上天 2009-04-14
  • 打赏
  • 举报
回复
你想做什么啊?
you_tube 2009-04-14
  • 打赏
  • 举报
回复
*改为1
等不到来世 2009-04-14
  • 打赏
  • 举报
回复
语句太简单,没什么好优化的

1.尽量不要用*,选出你真正需要的字段。
2.replyTime 上建索引
IDNCC 2009-04-14
  • 打赏
  • 举报
回复
对了 需要考虑到索引的应用哦~~
reply.topicid = 唯一索引
ForumUser.username = 聚集索引
reply.replyUser = 非聚集索引

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧