這篇文章主要介紹數(shù)據(jù)庫(kù)中使用create table...as select *語(yǔ)句要注意什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)業(yè)提供德清企業(yè)網(wǎng)站建設(shè),專(zhuān)注與網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、H5技術(shù)、小程序制作等業(yè)務(wù)。10年已為德清眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。
1、再做一些數(shù)據(jù)遷移時(shí)候,很多人會(huì)使用create table as select * from table where id=-1的方式來(lái)年建立一摸一樣的表,但是這樣做有個(gè)很大的弊端,不能將原表中的default value也一同遷移過(guò)來(lái)。
2、 Using the CREATE TABLE ... AS SELECT ... command: This command will copy acrooss to the new table all the data,but the constraints triggers ,and so on will not be transferred to the new table.
那些都是not null約束,其他的約束和trigger是帶不過(guò)來(lái)了,嚴(yán)格說(shuō)來(lái)not null也是約束的一種,只不過(guò)教材上把它排除在外了吧。
慎用create table as select,一定要注意默認(rèn)值的問(wèn)題
oraclecreate talbe as select數(shù)據(jù)庫(kù)遷移
再做一些數(shù)據(jù)遷移時(shí)候,很多人會(huì)使用create table as select * from table where id=-1的方式來(lái)年建立一摸一樣的表,但是這樣做有個(gè)很大的弊端,不能將原表中的default value也一同遷移過(guò)來(lái),可以看下面的例子:
第一,新建一個(gè)表
-- 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
第三、看看兩個(gè)表的結(jié)構(gòu),會(huì)發(fā)現(xiàn)第二張表的defaule value沒(méi)有了,如下2圖,可以很明顯看出來(lái),表02的add_date的默認(rèn)值得sysdate沒(méi)有了
table01的表結(jié)構(gòu)
table02的表結(jié)構(gòu)
在數(shù)據(jù)庫(kù)中移動(dòng)數(shù)據(jù)最快的方法是將其從一個(gè)表移動(dòng)到別一個(gè)表,而不是需要進(jìn)入操作系統(tǒng)將數(shù)據(jù)從一個(gè)表移動(dòng)到別一個(gè)表,有一些常見(jiàn)的方法可用于提高數(shù)據(jù)遷移的性能:
1. 調(diào)整表的結(jié)構(gòu)(刪除索引和觸發(fā)器)
2. 在數(shù)據(jù)遷移期間禁用約束
3. 使用提示和選項(xiàng)來(lái)改進(jìn)事務(wù)性能
第一個(gè)技巧是調(diào)整表的結(jié)構(gòu),它涉及禁用目標(biāo)表上面的任何觸發(fā)器或索引。例如,如果在目標(biāo)表上有行級(jí)觸發(fā)器,則插入到表中的每一行都會(huì)執(zhí)行觸發(fā)器。如果可能的話,最好在數(shù)據(jù)插入之前將目標(biāo)表的觸發(fā)器禁用;如果應(yīng)該為每個(gè)插入的行執(zhí)行該觸發(fā)器,則可以在批量插入完成以后再創(chuàng)建此觸發(fā)器,而不應(yīng)該在批量插入期間每插入一條數(shù)據(jù)重復(fù)執(zhí)行觸發(fā)器。
除了禁用觸發(fā)器,應(yīng)該在啟動(dòng)數(shù)據(jù)加載之前刪除目標(biāo)表上面的索引,然后在數(shù)據(jù)加載完畢后再重新創(chuàng)建索引。如果索引留在表上,ORACLE將在插入每一行時(shí)動(dòng)態(tài)管理索引。
注意:刪除索引和禁用觸發(fā)器可以解決大多數(shù)數(shù)和大型表與表之間數(shù)據(jù)遷移中遇到的性能問(wèn)題。
除了禁用索引,還要考慮到表上的約束。如果源數(shù)據(jù)已經(jīng)在數(shù)據(jù)庫(kù)的表中,在將數(shù)據(jù)加載到目標(biāo)表之前,可以檢查該數(shù)據(jù)了解它的相關(guān)約束(例如外鍵或check約束),一旦加載數(shù)據(jù)完成就可以重新啟用這些約束。
如果以上選項(xiàng)無(wú)法提供適當(dāng)?shù)男阅?,就?yīng)該調(diào)查Oracle為數(shù)據(jù)遷移調(diào)整引入的選項(xiàng)。這些選項(xiàng)包括如下:
1.插入命令的APPPEND提示 類(lèi)似于Direct Path Loader,APPENED提示將數(shù)據(jù)塊加載到表中,從表的高水位線開(kāi)始。使用APPENED提示可以增加空間利用率。
2.Nologging選項(xiàng) 如果正在執(zhí)行create table as select 命令,使用nologing選項(xiàng)可避免在操作期間寫(xiě)入重做日志文件。
3.并行選項(xiàng) 并行查詢(xún)使用多個(gè)進(jìn)程來(lái)完成一個(gè)任務(wù)。對(duì)于create table as select命令,可并行化create table 部分和查詢(xún)部分。如果使用并行選項(xiàng),則也應(yīng)該使用nologing選項(xiàng),否則并行操作將不得不由于串行化寫(xiě)入到聯(lián)機(jī)重做日志文件而等待。
在使用這些高級(jí)選項(xiàng)之前,應(yīng)該首先調(diào)查目標(biāo)表的結(jié)構(gòu),確保已經(jīng)避免前面提到的一些常見(jiàn)問(wèn)題。
以上是“數(shù)據(jù)庫(kù)中使用create table...as select *語(yǔ)句要注意什么”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享文章:數(shù)據(jù)庫(kù)中使用createtable...asselect*語(yǔ)句要注意什么
分享地址:http://aaarwkj.com/article36/pdpjpg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號(hào)、電子商務(wù)、網(wǎng)站改版、服務(wù)器托管、外貿(mào)網(wǎng)站建設(shè)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)