将连接查询改成视图

bing475879749 2011-03-10 01:09:53
SELECT     id, [group], name, sex, age, num, tel, s_time, isflow, pubtime, userid, class_name, isstop,
(SELECT TOP (1) class_name
FROM dbo.release
WHERE (rosterid = dbo.roster.id)
ORDER BY f_time DESC) AS cn
FROM dbo.roster



1对多的查询,可以查出按时间,最近的一条

十万条记录,用连接查询速度好慢好慢
...全文
168 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuanyanlan 2011-03-11
  • 打赏
  • 举报
回复
关键是
ORDER BY f_time DESC 这点慢
在release.f_time加索引

andylist 2011-03-11
  • 打赏
  • 举报
回复
先做成视图,再写成存储过程,会不会快一点?
bing475879749 2011-03-10
  • 打赏
  • 举报
回复
大侠,求大侠
bing475879749 2011-03-10
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwwwgou 的回复:]
--#1.视图和CROSS APPLY都不会提高效率
--#2.对release表rosterid字段建立索引
--#3.对release表f_time字段建立索引 (时间大部分消耗在排序这儿了)
[/Quote]

有什么高效的方法不?
Shawn 2011-03-10
  • 打赏
  • 举报
回复
--#1.视图和CROSS APPLY都不会提高效率
--#2.对release表rosterid字段建立索引
--#3.对release表f_time字段建立索引 (时间大部分消耗在排序这儿了)
lds1ove 2011-03-10
  • 打赏
  • 举报
回复
SELECT     id, [group], name, sex, age, num, tel, s_time, isflow, pubtime, userid, class_name, isstop,cn.class_name

FROM dbo.roster
cross apply
(SELECT TOP (1) class_name FROM dbo.release
WHERE rosterid = dbo.roster.id
ORDER BY f_time DESC) AS cn

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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