RDBMS のデータ削除


  delete ( DML )




Oracle のドキュメント(スキーマ・オブジェクトの管理)では、以下のように述べられています。

  表からすべての行を削除するには、次の3通りの方法があります。
  • DELETE文を使用する。
  • DROP文とCREATE文を使用する。
  • TRUNCATE文を使用する。

データを削除する最も一般的な方法は、 delete 文で削除する方法です。

delete 文は、 where 句により条件を指定して行単位で削除するのが基本ですが、
条件無しで実行するとテーブル全体をクリアします。

この場合、トランザクションを有する RDBMS では、削除処理そのものが rollback 対象になる為、
リソースの消費と処理時間の消費が、テーブルそのものの更新以外にも発生します。

ですから、大量( 数百万件 ) のデータを delete 文で削除するような事は絶対に避けなければなりません。
通常、バッチ処理での更新(削除)では、数件(1件)毎に commit 処理を行います。
しかし、commit の回数が多くなればなるほどそのぶん全体の処理時間は増大します。


  truncate table (ddl)

通常、テーブルのデータクリアはこの SQL で処理します。
truncate table は、トランザクションとは関係なく処理されるので、トランザクション中に
実行すると、自動的に静止点が確立されます( commit される )

  drop してから 再度 create する

機能だけで言えば、truncate のほうが優れています。

テーブルを削除すると、テーブルに依存するオブジェクトが無効になり、意図せぬ不具合を起こす可能性があるからです。

しかし、MySQL、Oracle、PostgreSQL では、create に as select を使った構文があり、
テーブル作成と同時に初期データを投入するという事も可能です。
( EXCEL、MDB、SQLServer、PostgreSQL では、同等の select into 構文があります )

いずれにしても、どのような方法を使ったほうが確実でリスクが少ないかを
ケース毎に熟考する必要があります。




yahoo  google  MSDN  MSDN(us)  WinFAQ  Win Howto  tohoho  ie_DHTML  vector  wdic  辞書  天気 


[db]
claudebot
24/03/29 23:09:27
InfoBoard Version 1.00 : Language=Perl

1 BatchHelper COMprog CommonSpec Cprog CprogBase CprogSAMPLE CprogSTD CprogSTD2 CprogWinsock Cygwin GameScript HTML HTMLcss InstallShield InstallShieldFunc JScript JScriptSAMPLE Jsfuncs LLINK OldProg OracleGold OracleSilver PRO PRObrowser PROc PROconePOINT PROcontrol PROftpclient PROjscript PROmailer PROperl PROperlCHAT PROphp PROphpLesson PROphpLesson2 PROphpLesson3 PROphpfunction PROphpfunctionArray PROphpfunctionMisc PROphpfunctionString PROsql PROvb PROvbFunction PROvbString PROvbdbmtn PROvbonepoint PROwebapp PROwin1POINT PROwinSYSTEM PROwinYOROZU PROwindows ProjectBoard RealPHP ScriptAPP ScriptMaster VBRealtime Vsfuncs a1root access accreq adsi ajax amazon argus asp aspSample aspVarious aspdotnet aw2kinst cappvariety centura ckeyword classStyle cmaterial cmbin cmdbapp cmenum cmlang cmlistbox cmstd cmstdseed cmtxt cs daz3d db dbCommon dbaccess dnettool dos download flex2 flex3 flex4 framemtn framereq freeWorld freesoft gimp ginpro giodownload google hdml home hta htmlDom ie9svg install java javaSwing javascript jetsql jquery jsp jspTest jspVarious lightbox listasp listmsapi listmsie listmsiis listmsnt listmspatch listmsscript listmsvb listmsvc memo ms msde mysql netbeans oraPlsql oracle oracleWiper oraclehelper orafunc other panoramio pear perl personal pgdojo pgdojo_cal pgdojo_holiday pgdojo_idx pgdojo_ref pgdojo_req php phpVarious phpguide plsql postgres ps r205 realC realwebapp regex rgaki ruby rule sboard sc scprint scquest sdb sdbquest seesaa setup sh_Imagick sh_canvas sh_dotnet sh_google sh_tool sh_web shadowbox shgm shjquery shvbs shweb sjscript skadai skywalker smalltech sperl sqlq src systemdoc tcpip tegaki three toolbox twitter typeface usb useXML vb vbdb vbsfunc vbsguide vbsrc vpc wcsignup webanymind webappgen webclass webparts webtool webwsh win8 winofsql wmi work wp youtube