请教一个SQL语句的问题?

ujjcel 2005-05-27 09:45:14
为什么用insert into table1(field1) select field2 from table2
如果数据很多(比如3000条以上),为什么用这样的语法比用遍历数据集要快很多呢,有人能解释一下为什么吗?
比如我以前的做法是把table2打开一下,然后用for循环一条一条地插入另一张表中,但是速度就是不快.
望知道的人能赐教.
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
changechange 2005-06-02
  • 打赏
  • 举报
回复
http://hanlin2.hbu.edu.cn/cmc/dzja/dbms/ch3.htm
liuyann 2005-06-01
  • 打赏
  • 举报
回复
批量时,会将一个记录集一起写入到新的表中,一次磁盘读写可处理多条记录,而一条一条则读一次,写一次,太慢
cb0912cn 2005-06-01
  • 打赏
  • 举报
回复
具体涉及因素很多
举个简单的
比如
数据在数据库中是以页为中心的,每页中可能含有几行数据,如果用批量更新的话,就直接一次更新几行数据。如果用for的话,每次还的去找数据页,这样速度就显示出来了,特别是在多批量数据的时候~
ujjcel 2005-05-30
  • 打赏
  • 举报
回复
为什么会快呢?是否还有更快的SQL语句呢?
ujjcel 2005-05-30
  • 打赏
  • 举报
回复
wushou291(幸运星)的比较成动,就是有时需要对两个字段进行相除,可是有时分母不能为零,这个又不好判断.
wushou291 2005-05-30
  • 打赏
  • 举报
回复
我想还有比较快的方法,但是不是更快的SQL语句。。。
wushou291 2005-05-30
  • 打赏
  • 举报
回复
打个比喻你就知道了
要复制、粘贴许多条数据
你觉得是一条一条的复制、再一条一条粘贴快,还是先把复制整个数据、再进行粘贴快呢?
要是不知道。。。你可以手动的试试。。。
KeNan_Net 2005-05-29
  • 打赏
  • 举报
回复
同等数据量的情况下,运行一条插入语句,当然比你用FOR循环运行一条一条的插入语句快,
cb0912cn 2005-05-27
  • 打赏
  • 举报
回复
当然用select要快多了呢
机制都不一样~~~
changechange 2005-05-27
  • 打赏
  • 举报
回复
http://hanlin2.hbu.edu.cn/cmc/dzja/dbms/ch3.htm
changechange 2005-05-27
  • 打赏
  • 举报
回复
FOREIGN KEY(SNO) REFERENCES S(SNO) ,

FOREIGN KEY(CNO) REFERENCES C(CNO) ) ;

二、修改基本表

SQL语言用ALTER TABLE语句修改基本表,其一般格式为:

ALTER TABLE <表名>

[ADD <新列名><数据类型>[完整性约束]]

[DROP <完整性约束名>]

[MODIFY <列名><数据类型>];

ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除制定的完整性约束条件,MODIFY子句用于修改原有的列定义,包括修改列名和数据类型。简单介绍教材上的例子。

三、删除基本表

当某个基本表不再需要时,可以用DROP TABLE删除,其格式为:

DROP TABLE <表名>

基本表一旦删除,表中的数据、此表上建立的索引和视图都将自动被删除掉。因此执行删除基本表的操作一定要格外小心。

3.2.2 建立与删除索引

建立索引是加快查询速度的有效手段。

一、建立索引

在SQL语言中,建立索引使用CREATE INDEX语句,其一般格式为:

CREATE [UNIQUE][CLUSTER] INDEX <索引名>

ON <表名> (<列名>[<次序>][,<列名>[<次序>]]…);

索引可以建立在该表的一列或多列上,各列名之间用逗号分隔。每个<列名>后面还可以用<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),缺省值为ASC。

UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。

CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。

用户可以在最常查询的列上建立聚簇索引以提高查询效率。显然在一个基本表上最多只能建立一个聚簇索引。建立聚簇索引后,更新索引列数据时,往往导致表中记录的物理顺序的变更,代价较大,因此对于经常更新的列不宜建立聚簇索引。

二、删除索引

删除索引使用DROP INDEX语句,其一般格式为:

DROP INDEX <索引名>;

3.3 查询

数据库查询是数据库的核心操作。SQL语言提供了SELECT语句进行数据库的查询,该语句具有灵活的使用方式和丰富的功能。其一般格式为:

SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]…

FROM <表名或视图名>[,<表名或视图名>]…

[WHERE <条件表达式>]

7,713

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office Access是由微软发布的关系数据库管理系统。它结合了 MicrosoftJet Database Engine 和 图形用户界面两项特点。
社区管理员
  • Access
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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