以下access数据库语句怎么优化,效率在数据数为3000时,执行很差

潜龙在渊 2013-01-22 11:54:59


以下access数据库语句怎么优化,效率在数据数为3000时,执行很差
SELECT top 10 jobid,classid,jobname,provincecode,citycode,peaplenum,publishtime,remark,(SELECT count(jobid) FROM t_jobs WHERE isdelete=0 and ( jobname like '%销%') ) as totalcount,(select name from t_classify where t_jobs.classid=t_classify.classid and t_classify.isdelete=0) AS classname FROM t_jobs WHERE isdelete=0 and ( jobname like '%销%') and jobid not in (select top 50 jobid from t_jobs where isdelete=0 and ( jobname like '%销%') order by jobid desc ) order by jobid desc

...全文
73 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
silwol 2013-01-22
  • 打赏
  • 举报
回复
(select name from t_classify where t_jobs.classid=t_classify.classid and t_classify.isdelete=0) AS classname --->可以改成left join 其他的我大概看了下,你这个除了totalcount外,就是取isdelete=0 and ( jobname like '%销%')的jobid倒序51-60这10个。 不清楚access有没有ROW_NUMBER(),没有的话你可以考虑建一张带有自增列的临时表#temp(id,...)
insert into #temp(...)
select jobid,classid,jobname,provincecode,citycode,peaplenum,publishtime,remark,name)
from t_jobs a
left join t_classify b
  on a.classid=b.classid and b.isdelete=0
where a.isdelete=0 and (a.jobname like '%销%')
order by a.jobid desc
#temp里面的id (51-60)就是你要的,count(1)就是totalcount

22,209

社区成员

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

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