zoukankan      html  css  js  c++  java
  • select into语句分析

    SQL SELECT INTO 语句可用于创建表的备份复件

    SELECT INTO 语句

    SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

    SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

    SQL SELECT INTO 语法

    您可以把所有的列插入新表:

    SELECT *
    INTO new_table_name [IN externaldatabase] 
    FROM old_tablename

    或者只把希望的列插入新表:

    SELECT column_name(s)
    INTO new_table_name [IN externaldatabase] 
    FROM old_tablename

    SQL SELECT INTO 实例 - 制作备份复件

    下面的例子会制作 "Persons" 表的备份复件:

    SELECT *
    INTO Persons_backup
    FROM Persons

    IN 子句可用于向另一个数据库中拷贝表:

    SELECT *
    INTO Persons IN 'Backup.mdb'
    FROM Persons

    如果我们希望拷贝某些域,可以在 SELECT 语句后列出这些域:

    SELECT LastName,FirstName
    INTO Persons_backup
    FROM Persons

    SQL SELECT INTO 实例 - 带有 WHERE 子句

    我们也可以添加 WHERE 子句。

    下面的例子通过从 "Persons" 表中提取居住在 "Beijing" 的人的信息,创建了一个带有两个列的名为 "Persons_backup" 的表:

    SELECT LastName,Firstname
    INTO Persons_backup
    FROM Persons
    WHERE City='Beijing'

    SQL SELECT INTO 实例 - 被连接的表

    从一个以上的表中选取数据也是可以做到的。

    下面的例子会创建一个名为 "Persons_Order_Backup" 的新表,其中包含了从 Persons 和 Orders 两个表中取得的信息:

    SELECT Persons.LastName,Orders.OrderNo
    INTO Persons_Order_Backup
    FROM Persons
    INNER JOIN Orders
    ON Persons.Id_P=Orders.Id_P

    为什么select into基本上不耗费性能?

    场景:我有一张表大概20万条数据。直接用select *查询大约需要9s,我将这些数据通过select * into #xxx 的方式插入一张临时表,然后在查询这张临时表的话花费的时间还是大约9s。为什么呢?

    答案:20万=200K,假设平均每条记录大小为500字节,那200K*500=97M,网络传输,一秒11M,全部数据传过来,就要97/11=8.8秒。
    而select * into #xxx 的方式,相当于在服务器进行copy,97M,顶多一两秒就OK了。

  • 相关阅读:
    Java实现“睡排序”——线程池Executors的使用
    浅谈HashMap与线程安全 (JDK1.8)
    Ubuntu 16 Java Develop环境快速搭建
    Spring Boot在反序列化过程中:jackson.databind.exc.InvalidDefinitionException cannot deserialize from Object value
    Java 8 – Map排序
    vue指令优化网络图片加载速度
    如何实现小于12px的字体效果
    两种以上方式实现已知或者未知宽度的垂直水平居中
    C# winform窗体间传值(使用委托或事件)
    C#栈Stack的使用
  • 原文地址:https://www.cnblogs.com/hetaoyuan/p/12520804.html
Copyright © 2011-2022 走看看