left outer jion 很少的数据量居然要 25m !!!

libinlink 2011-02-15 04:46:12
我用Profiler跟踪到的sql
在查询分析器里执行居然要 25s!!!!why?
谢谢@!

EXEC sp_executesql N'SELECT
[Extent1].[ID] AS [ID],
[Extent2].[UserName] AS [UserName],
[Extent1].[OccurDate] AS [OccurDate],
[Extent1].[UnitId] AS [UnitId],
[Extent3].[dValue] AS [dValue],
[Extent4].[dValue] AS [dValue1],
[Extent5].[dValue] AS [dValue2],
SUBSTRING([Extent1].[Content], 0 + 1, 25) AS [C1]
FROM [dbo].[Complaints] AS [Extent1]
INNER JOIN [dbo].[Staffs] AS [Extent2] ON [Extent1].[AcceptStaffID] = [Extent2].[ID]
LEFT OUTER JOIN [dbo].[Dictionaries] AS [Extent3] ON [Extent1].[Property] = [Extent3].[dKey]
LEFT OUTER JOIN [dbo].[Dictionaries] AS [Extent4] ON [Extent1].[ComplaintWay] = [Extent4].[dKey]
LEFT OUTER JOIN [dbo].[Dictionaries] AS [Extent5] ON [Extent1].[DeptId] = [Extent5].[dKey]
WHERE ([Extent1].[OccurDate] >= @p__linq__0) AND ([Extent1].[OccurDate] <= @p__linq__1) AND ([Extent3].[dValue] = @p__linq__2) AND ([Extent4].[dValue] = @p__linq__3)',
N'@p__linq__0 datetime,@p__linq__1 datetime,@p__linq__2 nvarchar(4000),@p__linq__3 nvarchar(4000)',
@p__linq__0 = '2011-02-01 00:00:00:000',
@p__linq__1 = '2011-02-15 00:00:00:000', @p__linq__2 = N'粗暴待客',
@p__linq__3 = N' 电话'
...全文
106 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
叶子 2011-02-15
  • 打赏
  • 举报
回复
加上索引后,看看执行计划
SQL77 2011-02-15
  • 打赏
  • 举报
回复
那楼主觉得该多少秒
oO寒枫Oo 2011-02-15
  • 打赏
  • 举报
回复
应该是缺少索引的缘故,建议楼主将这几个表中经常读取查找的列 建立几个索引试试
haa17 2011-02-15
  • 打赏
  • 举报
回复
我感觉不是语句本身有多大的问题,而是缺少索引造成的。
dawugui 2011-02-15
  • 打赏
  • 举报
回复
你好几个表连接,速度肯定慢了.

建议你对相关字段建立索引再试试.
haa17 2011-02-15
  • 打赏
  • 举报
回复
楼主 ctrl+l 执行下语句看看开销主要在哪一块

34,593

社区成员

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

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