数据库大牛们,帮我看看insert怎么会成为瓶颈的

dna_xp 2017-09-05 11:52:54
create table tmp(.........)
insert into tmp(...) select * from xxx(select a,b,c,d from yyy....)
select * from tmp


我们的财务系统取数很慢,我后台跟踪了语句,发现是先建个临时表,然后把取得到的数据插入。那问题来了,我发现整个语句瓶颈在insert into上面,总共select出256条数据,道理上插入应该很快啊,毕竟tmp没有建立任何约束。
我尝试这样取数,这时候速度飞快
select top 256 * from xxx(select a,b,c,d from yyy...)

这就奇怪了,难道insert语句的逻辑是,没insert一条记录,都要重新跑一次select?我看执行计划里也是先select后,在统一insert的吗?都是256条数据,为什么写top就会快呢?
附执行计划:
没有加top


...全文
719 39 打赏 收藏 转发到动态 举报
写回复
用AI写文章
39 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
语句写的有问题 。 还有执行计划怎么那么长
zlwork_84 2017-09-06
  • 打赏
  • 举报
回复
接分了。 厂家工程师已经来过了,发现是自己的代码,马上远程更新了。
吉普赛的歌 2017-09-05
  • 打赏
  • 举报
回复
你这执行计划也不是全图。 把执行计划里占用百分比最多的贴出来吧, 不要把鼠标放那里
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
没有用top的

我的sql版本是2016
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
对不起,重新贴,有top的
顺势而为1 2017-09-05
  • 打赏
  • 举报
回复
画面太小了,看不清
繁花尽流年 2017-09-05
  • 打赏
  • 举报
回复
画质感人
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
写错了,上面是加了top的执行计划
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
补没有加top的执行计划
OwenZeng_DBA 2017-09-05
  • 打赏
  • 举报
回复
引用 36 楼 dna_xp 的回复:
[quote=引用 35 楼 z10843087 的回复:] [quote=引用 34 楼 dna_xp 的回复:] [quote=引用 33 楼 z10843087 的回复:] [quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote]
引用 33 楼 z10843087 的回复:
[quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote] 好的,你的qq号麻烦给我下[/quote] 私信发你[/quote] 莫名的又好了,连语句都变了,可能厂家更新过了[/quote] 行吧,问题解决就结贴吧
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
引用 35 楼 z10843087 的回复:
[quote=引用 34 楼 dna_xp 的回复:] [quote=引用 33 楼 z10843087 的回复:] [quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote]
引用 33 楼 z10843087 的回复:
[quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote] 好的,你的qq号麻烦给我下[/quote] 私信发你[/quote] 莫名的又好了,连语句都变了,可能厂家更新过了
OwenZeng_DBA 2017-09-05
  • 打赏
  • 举报
回复
引用 34 楼 dna_xp 的回复:
[quote=引用 33 楼 z10843087 的回复:] [quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote]
引用 33 楼 z10843087 的回复:
[quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote] 好的,你的qq号麻烦给我下[/quote] 私信发你
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
引用 33 楼 z10843087 的回复:
[quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote]
引用 33 楼 z10843087 的回复:
[quote=引用 32 楼 dna_xp 的回复:] 要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看[/quote] 好的,你的qq号麻烦给我下
OwenZeng_DBA 2017-09-05
  • 打赏
  • 举报
回复
引用 32 楼 dna_xp 的回复:
要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
,,,你要不加我qq,我给你远程看看
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
要说insert个几万条到几十万条,效率很低可以理解。没道理200多条会这样啊。
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
引用 29 楼 z10843087 的回复:
[quote=引用 24 楼 dna_xp 的回复:] 会不会是虚拟磁盘写IO不行?
SSD的话,磁盘问题的可能性不大。你刚才的等待是等待CPU调度,和IO没关系,你等会看看后面等待的起来[/quote] 是的,我也举得不是磁盘问题,虽然是在ssd raid上建的虚拟磁盘文件
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
引用 28 楼 yenange 的回复:
没办法下载就不好说了, 本来我是0积分下载的, csdn后来不允许0积分下载了, 强制加了1分。 下面的代码你执行一下, 再看看你那个代码能不能快起来?
--use 对应的库
EXEC sp_msforeachtable 'update statistics ?'
无效。我觉得还是在insert语句上出问题。以为光select语句是很快的
OwenZeng_DBA 2017-09-05
  • 打赏
  • 举报
回复
引用 24 楼 dna_xp 的回复:
会不会是虚拟磁盘写IO不行?
SSD的话,磁盘问题的可能性不大。你刚才的等待是等待CPU调度,和IO没关系,你等会看看后面等待的起来
吉普赛的歌 2017-09-05
  • 打赏
  • 举报
回复
没办法下载就不好说了, 本来我是0积分下载的, csdn后来不允许0积分下载了, 强制加了1分。 下面的代码你执行一下, 再看看你那个代码能不能快起来?
--use 对应的库
EXEC sp_msforeachtable 'update statistics ?'
dna_xp 2017-09-05
  • 打赏
  • 举报
回复
引用 25 楼 yenange 的回复:
http://download.csdn.net/download/yenange/9402028 测一下数据库所在的盘的IO, 结果贴出来
要积分才能打开,我没有积分。
加载更多回复(19)

22,207

社区成员

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

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