`
jiaoronggui
  • 浏览: 1332138 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
博客专栏
B7c2eb31-a8ea-3973-a517-d00141f39b89
项目管理软件-redmin...
浏览量:116553
4a63e153-250f-30f6-a051-97cfc67cb3d3
IT职业规划
浏览量:199545
社区版块
存档分类
最新评论

慎用create table as select,一定要注意默认值的问题

阅读更多

再做一些数据迁移时候,很多人会使用create table  as select * from table where id=-1的方式来年建立一摸一样的表,但是这样做有个很大的弊端,不能将原表中的default value也一同迁移过来,可以看下面的例子:

 

第一,新建一个表

 

-- Create table
create table table01
(
  id        number(16),
  add_date  date default sysdate,
  status    number(1),
  entp_code varchar2(200)
)

 

第二,使用create table table02 as
select * From table01 where id=-1

 

第三、看看两个表的结构,会发现第二张表的defaule value没有了,如下2图,可以很明显看出来,表02的add_date的默认值得sysdate没有了

table01的表结构

 table02的表结构


 

所以各位在做数据库迁移时候,使用create table as select时候,一定要注意默认值的问题

 

上周,因为此问题,导致生产环境下产生了大量的问题,头大了一天,特此奉献出来。

  • 大小: 4.1 KB
  • 大小: 4 KB
0
3
分享到:
评论
1 楼 zllwang 2011-08-01  
是啊,也发现了

相关推荐

    mysql数据库操作

    没有条件是全部删除,慎用 3、改数据 update 表名 set 列1 =值1,列2 = 值2 where 条件; 不写条件就都修改了 4、查询数据: a:查询表中全部数据 select * from 表名; 四、查数据 1、基本语法 格式:select ...

    52 条 SQL 语句.pdf

    慎用IN和NOT IN - **核心思想**:使用IN和NOT IN可能会导致全表扫描,尤其是当列表很长时。建议使用BETWEEN来替代。 - **示例**:查询年龄在1至3之间的员工信息。 ```sql -- 不推荐 SELECT * FROM employees ...

    mysql优化提高百万条数据的查询速度.pdf

    此外,in 和 not in 也要慎用,否则会导致全表扫描。可以使用 between instead of in。例如,select id from t where num between 1 and 3。 在 where 子句中使用参数也会导致全表扫描。可以使用强制查询使用索引的...

    mysql优化提高百万条数据的查询速度[参考].pdf

    5. in和not in也要慎用,否则会导致全表扫描。对于连续的数值,能用between就不要用in了。 6. 下面的查询也将导致全表扫描:select id from t where name like '%abc%'。可以考虑使用全文检索来提高效率。 7. 如果...

    mysql数据库优化方案

    - **慎用 IN 和 NOT IN**:这些操作符可能导致全表扫描,尤其是在处理大量数据时。例如: ```sql SELECT id FROM t WHERE num IN (1, 2, 3); ``` 对于连续数值范围,建议使用 `BETWEEN` 替代 `IN`: ```sql ...

    mysql百万量级优化

    4. **慎用`OR`连接条件** - `OR`操作符会使得MySQL无法使用索引来优化查询。可以采用多个`SELECT`语句联合查询的方式替代。 - 示例:将`SELECT id FROM t WHERE num = 10 OR num = 20;`改为`SELECT id FROM t ...

    怎样提高数据库查询效率

    5. in 和 not in 也要慎用,否则会导致全表扫描。可以使用 between 操作符来代替 in 操作符,提高查询效率。 6. 对于 like 操作符,应该避免使用通配符 % 在前缀处,否则将导致全表扫描。可以使用全文检索来提高...

    30个提高数据库查询效率方法总结笔记

    5. in 和 not in 也要慎用,否则会导致全表扫描。 知识点:in 和 not in 操作符可能会导致索引失效,可以使用 between 语句来替代。 6. 下面的查询也将导致全表扫描:select id from t where name like '%abc%'。 ...

    处理百万级以上的数据提高查询速度的方法

    6. **慎用`IN`和`NOT IN`**:当处理大量数据时,`IN`和`NOT IN`操作符也可能触发全表扫描。可以考虑使用`BETWEEN`代替连续数值的`IN`,或者使用子查询或临时表来优化处理大量数据的`IN`操作。 7. **避免使用参数化...

    百万数据查询优化技巧三十则

    12. **避免无意义的查询**:创建空表结构时,直接使用CREATE TABLE语句,而非通过SELECT INTO从空结果集中创建。 13. **索引选择性**:索引的有效性取决于数据的分布,如果索引列的数据重复度高,可能对查询优化...

    浅谈MySQL中优化sql语句查询常用的30种方法

    12. **避免无意义的查询**:创建空表结构时,直接使用`CREATE TABLE`语句,而不是通过`SELECT INTO`。 13. **使用EXISTS代替IN**:在某些情况下,`EXISTS`比`IN`更高效,特别是在子查询返回大量数据时。 14. **...

Global site tag (gtag.js) - Google Analytics