为了账号安全,请及时绑定邮箱和手机立即绑定

提高sql查询速率

提高sql查询速率

慕码人8056858 2018-12-07 13:36:02
现在一个sql查询出来得要31秒,求问怎么提高效率,语句如下: select e.emp_no,e.emp_cname,e.emp_ename,e.dept_code,b.[name], ISNULL(convert(nvarchar(20),EventsDateTime,120),'') cardtime from  [benq].Sky2004.dbo.AccessEvents a,employee e,[benq].Sky2004.dbo.VIEW_DeviceReader b where a.deviceid=b.recnum and b.[name] like '%考勤%'and a.personno=e.emp_noand a.personno in(select c.emp_no from employee c where c.dept_code='2000' and c.active='Y')AND (convert(nvarchar(20),EventsDateTime,112) BETWEEN '2012-08-01' AND '2012-08-21')and e.active='Y'order by  convert(nvarchar(10),EventsDateTime,112) desc,e.emp_no,EventsDateTime
查看完整描述

9 回答

?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

创建索引,注意like的不要筹建索引

查看完整回答
反对 回复 2019-01-07
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

select  e.emp_no,e.emp_cname,e.emp_ename,e.dept_code,b.[name], ISNULL(convert(nvarchar(20),EventsDateTime,120),'') cardtime

from   [benq].Sky2004.dbo.AccessEvents a,employee            [benq].Sky2004.dbo.VIEW_DeviceReader b

where

a.personno not exists (select 1  from employee c where c.dept_code='2000' and c.active='Y') AND (convert(nvarchar(20),EventsDateTime,112) BETWEEN '2012-08-01' AND '2012-08-21') and e.active='Y' and  b.[name] like '%考勤%'  

and a.deviceid=b.recnum 

and a.personno=e.emp_no

order by convert(nvarchar(10),EventsDateTime,112) desc,e.emp_no,EventsDateTime  

查看完整回答
反对 回复 2019-01-07
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

创建在哪些列中好一些呢

查看完整回答
反对 回复 2019-01-07
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

@MikeAndy: 

再试下

select  e.emp_no,e.emp_cname,e.emp_ename,e.dept_code,b.[name],ISNULL(convert(nvarchar(20),EventsDateTime,120),'') cardtime

from   [benq].Sky2004.dbo.AccessEvents a,employee            [benq].Sky2004.dbo.VIEW_DeviceReader b

where

a.personno exists (select c.personno  from employee c where c.dept_code='2000' and c.active='Y')

AND (convert(nvarchar(20),EventsDateTime,112) BETWEEN '2012-08-01' AND '2012-08-21') and e.active='Y' and  b.[name] like '%考勤%'  

and a.deviceid=b.recnum 

and a.personno=e.emp_no

order by convert(nvarchar(10),EventsDateTime,112) desc,e.emp_no,EventsDateTime  

查看完整回答
反对 回复 2019-01-07
?
LEATH

TA贡献1936条经验 获得超6个赞

朋友,上面那个试下?我也学习下

查看完整回答
反对 回复 2019-01-07
?
手掌心

TA贡献1942条经验 获得超3个赞

有语法错误,等会哈

查看完整回答
反对 回复 2019-01-07
?
HUH函数

TA贡献1836条经验 获得超4个赞

我也觉得没问题的,但是查询分析器一直报exists和 AND附近存在语法错误,在帮我看看吧,本人实在是小白

查看完整回答
反对 回复 2019-01-07
?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

增加索引 然后不要 like %xx%

查看完整回答
反对 回复 2019-01-07
  • 9 回答
  • 0 关注
  • 754 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信