SQL insert update select的问题

mycodeis0000 2011-12-14 05:01:09
我想请问下 insert 10W条数据与select 10W条数据
为什么insert所花时间远远大于select呢?
我想指导其中的原理 不知道哪位大侠明白 指教下。
...全文
111 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
mycodeis0000 2011-12-19
  • 打赏
  • 举报
回复
你之前说到的编译问题,
10W条编译10W次
那如果写成存储过程
之前我说的那种情况1条SQL 更新10W条数据

10W更新语句都写到成存储过程
当程序去调用他们的时候是不是执行速度差不多呢?
因为我知道存储过程都是预编译的,但不知道是不是可以这样理解。
(当然这种做法不合理,我只是想弄明白)
笨笨一休 2011-12-16
  • 打赏
  • 举报
回复
抄一遍书比读一遍书费劲啊
baiying15 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 houyajin 的回复:]

引用 3 楼 qianjin036a 的回复:

写盘时,还要判断写在哪个存储页上,如果存储页满了还要新设一页,如果表有聚集索引而写入的又是插在中间的,那更慢,要在合适的地方把其他数据挪走,再插入.
读数据只要扫描一下,看是否符合条件,符合即读取,所以,写盘要比读盘慢多了.


学习了。
[/Quote] 学习
xqx_8888 2011-12-15
  • 打赏
  • 举报
回复
开销大
houyajin 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 qianjin036a 的回复:]

写盘时,还要判断写在哪个存储页上,如果存储页满了还要新设一页,如果表有聚集索引而写入的又是插在中间的,那更慢,要在合适的地方把其他数据挪走,再插入.
读数据只要扫描一下,看是否符合条件,符合即读取,所以,写盘要比读盘慢多了.
[/Quote]

学习了。
mycodeis0000 2011-12-15
  • 打赏
  • 举报
回复
你之前说到的编译问题,
10W条编译10W次
那如果写成存储过程
之前我说的那种情况1条SQL 更新10W条数据

10W条数据更新10W条数据都写成存储过程
当程序去调用他们的时候是不是执行速度差不多呢?
因为我知道存储过程都是预编译的,但不知道是不是可以这样理解。
(当然这种做法不合理,我只是想弄明白)
mycodeis0000 2011-12-15
  • 打赏
  • 举报
回复
是啊
我也都拼接成一条SQL执行的
但是客户那边的IT问我为什么执行5W条数据2秒不到(一条SQL执行5W条数据) 但FTP传输工具往数据库写数据却要花上几分钟(5W条SQL语句执行5W条数据)。

我也明白后者肯定花费时间要多,但主要是不明白为什么,也无法跟他解释
呵呵 谢谢你的指教!
-晴天 2011-12-15
  • 打赏
  • 举报
回复
经常看到新手在网页与数据库连接操作中,把语句放到循环中,那是最花时间的,如果能拼成一条语句,那效率就会提高很多.
-晴天 2011-12-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mycodeis0000 的回复:]

那请问
一条UPDATE 语句 执行10W条数据

10W条UPDATE语句执行10W条数据

他们的差别又在哪里
一条UPDATE 语句 执行10W条数据可能只需要花费几秒中或是几秒
10W条UPDATE语句执行10W条数据 确要花费几分钟

能不能像qianjin036a给出一个理论上的解释
[/Quote]

一条 update 语句,编译一次,更新一条也是编译一次,更新10W条也是编译一次,
但是 10W 条 update 语句,要编译 10 W 次,你说哪个花时间多?
mycodeis0000 2011-12-15
  • 打赏
  • 举报
回复
那请问
一条UPDATE 语句 执行10W条数据

10W条UPDATE语句执行10W条数据

他们的差别又在哪里
一条UPDATE 语句 执行10W条数据可能只需要花费几秒中或是几秒
10W条UPDATE语句执行10W条数据 确要花费几分钟

能不能像qianjin036a给出一个理论上的解释


有人知道不?
gogodiy 2011-12-15
  • 打赏
  • 举报
回复
insert还要记录日志。
mycodeis0000 2011-12-15
  • 打赏
  • 举报
回复
那请问
一条UPDATE 语句 执行10W条数据

10W条UPDATE语句执行10W条数据

他们的差别又在哪里
一条UPDATE 语句 执行10W条数据可能只需要花费几秒中或是几秒
10W条UPDATE语句执行10W条数据 确要花费几分钟

能不能像qianjin036a给出一个理论上的解释
勿勿 2011-12-14
  • 打赏
  • 举报
回复
写比读开销大,就这么一个道理!
--小F-- 2011-12-14
  • 打赏
  • 举报
回复
insert into是表存在 然后插入数据 扫描次数多

select..into是创建新表 扫描一次
-晴天 2011-12-14
  • 打赏
  • 举报
回复
写盘时,还要判断写在哪个存储页上,如果存储页满了还要新设一页,如果表有聚集索引而写入的又是插在中间的,那更慢,要在合适的地方把其他数据挪走,再插入.
读数据只要扫描一下,看是否符合条件,符合即读取,所以,写盘要比读盘慢多了.
-晴天 2011-12-14
  • 打赏
  • 举报
回复
不说别的,光说磁盘读写,写盘比读盘慢多了!
pengxuan 2011-12-14
  • 打赏
  • 举报
回复
insert语句开销大

34,590

社区成员

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

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