Technical
DB
DAO | Data Access Objects |
アプリケーションから、Jetデータベース・エンジンとODBC経由の データベースを制御するためのデータ・オブジェクト Jetを使った小規模アプリケーションに向いています。 ODBCドライバーを経由させればSQLServerやOracleなども RDBMSに接続できるが、データベース・エンジンのパフォーマンスを 十分に生かすことはできません。 |
|
RDO | Remote Data Objects |
ODBCドライバーを介したRDBMSとの接続機能を充実させ、 SQLServerやOracleなど大規模システム向けのRDBMSを使って クライアント/サーバー環境を構築する目的で開発された。 基本的な機能はDAOと同様だが、Jet接続には不向きです。 |
|
ADO | ActiveX Data Objects |
DAOとRDOの機能を統合し、Jetを使った小規模な開発から SQLServerなどによる大規模なクライアント/サーバー環境の 開発までカバー出来るように開発された。OLEDBによってRDBMS にネイティブに接続でき、各種データベース・エンジンに対する適応性 も高く、処理効率も向上しています。 |
|
oo4o | Oracle Object for OLE |
手法 | SDI |
DAO | Data Access Objects |
○利点 ■すべて、AccessのSQL文で統一できる ×欠点 ■トータルでみると、SELECT文の発行回数が2倍になっている ■主キーがないテーブルは更新できない ■主キーが10個以上あるテーブルは更新できない(Jetエンジンの制限) ■AccessSQLからPL/SQLに変換するときのオーバーヘッド ■カーソルの2重管理のオーバーヘッド ■Jetエンジンのカーソル管理でメモリ不足が発生したときのオーバーヘッド |
|
RDO | Remote Data Objects |
○利点 ■PL/SQLに基づいたSELECT文を記述できる ■レコードセット作成およびレコード取得などのオーバーヘッド軽減 ■更新可能なレコードセットが作成できる ×欠点 ■性能的に有利なサーバーカーソルではバージョンによって動作不能となる ■安定しているODBCカーソルでは、更新件数が増加すると性能が急激に劣化する |
|
ODBC Direct | RDO2.0がロードされる |
○利点 ■PL/SQLに基づいたSELECT文を記述できる ■レコードセット作成およびレコード取得などのオーバーヘッド軽減 ■更新可能なレコードセットが作成できる ×欠点 ■性能的に有利なサーバーカーソルではバージョンによって動作不能となる ■安定しているODBCカーソルでは、更新件数が増加すると性能が急激に劣化する *DAO3.5からODBC Directを使うときは、CreateWorkspaceメソッドで ODBC Directワークスペースを作成する |
|
DB | PostgreSQL 7.3.4 ユーザガイド |
DB2 インフォメーション・センター | |
i5 |
SELECT T2.COLUMN_NAME, T2.COLUMN_HEADING,
T2.ORDINAL_POSITION, T2.DATA_TYPE, T2.LENGTH, T2.NUMERIC_SCALE FROM QSYS2.SYSTABLES T1, QSYS2.SYSCOLUMNS T2 WHERE T2.TABLE_SCHEMA = T1.TABLE_SCHEMA AND ((T1.TABLE_SCHEMA='SX'||'DLIB') AND (T2.TABLE_NAME=T1.TABLE_NAME) AND (T1.TABLE_NAME='SXB000T')) ORDER BY T2.ORDINAL_POSITION |
sql | SELECT SUM(CAST(SKIRO AS NUMERIC)) FROM xx.xxxxxxx |
sql | SELECT * FROM xx.xxxxxxx with(nolock) sqlserver / with ur UDB |
sql | SUBSTR(CHAR(CURRENT DATE - 3 MONTHS,ISO),1,4) || SUBSTR(CHAR(CURRENT DATE - 3 MONTHS,ISO),6,2) |
sql |
UPDATE Reserve SET ResFlag = '1',TMS = CURRENT TIMESTAMP WHERE TO_CHAR(DateTime,'HH24:MI:SS') >= '08:00:00' AND TO_CHAR(DateTime,'HH24:MI:SS') < '23:00:00' |
sql |
select xxx,CONVERT(VARCHAR(8),
作成日時, 112) AS 日付,count(*) AS 件数 from tbl GROUP BY xxx,CONVERT(VARCHAR(8), 作成日時, 112) order by xxx,CONVERT(VARCHAR(8), 作成日時, 112) |
sql |
RANK ( ) OVER ( [query_partition_clause] order_by_clause ) select NAME, SAL, rank() over(order by SAL desc) rank from temp; NAME SAL RANK ---------- ---------- ---------- AAA 5000 1 BBB 3000 2 CCC 3000 2 DDD 2975 4 DENSE_RANK ( ) OVER ( [query_partition_clause] order_by_clause ) select NAEM, SAL, dense_rank() over(order by SAL desc) rank from temp; NAME SAL RANK ---------- ---------- ---------- AAA 5000 1 BBB 3000 2 CCC 3000 2 DDD 2975 3 |
sql | select * fromReserve where char(updtms) like '2003%' |
sql | full outer join |
sql |
WITH
CALENDAR(HIDUKE) AS ( SELECT CAST('2012/02/01'AS DATETIME) UNION ALL SELECT DATEADD(dd,1,A.HIDUKE) FROM CALENDAR A WHERE A.HIDUKE < DATEADD(DAY,-1,DATEADD(MONTH,1,CAST('2012/02/01'ASDATETIME))) ) SELECT HIDUKE,DATENAME(WEEKDAY,HIDUKE) FROM CALENDAR |
sql |
【結合を含んだデータの更新】 ・SQL-Serverの場合 UPDATE table1 SET COL1 = B.COL1 FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1 ・Oracleの場合 UPDATE (SELECT A.COL1 A_COL, B.COL2 B_COL FROM table1 A INNER JOIN table2 B ON A.CD1 = B.CD1) SET A_COL = B_COL |
sql |
【重複データの更新】 ・SQL-Serverの場合 UPDATE tblDATA SET ERR = 1 FROM tblDATA as t1 WHERE exists (SELECT * FROM tblDATA as t2 WHERE t1.DATA1 = t2.DATA1 AND t1.DATA2 = t2.DATA2 AND t1.DATA3 = t2.DATA3 having count(*) > 1) |
sql |
WITH U008 AS (SELECT KEY,NAME FROM M WHERE TBLID ='U008'), U058 AS (SELECT KEY,NAME FROM M WHERE TBLID ='U058') SELECT U052.KEY,U008.NAME,U058.NAME FROM M AS U052 LEFT JOIN U008 ON U052.ITEM03 = U008.KEY LEFT JOIN U058 ON U052.ITEM12 = U058.KEY WHERE U052.TBLID ='U052' |
sql | NULLIF 関数 - 値が等しいときに NULL を返す - |
sql | COALESCE(aaa,0) null -> zero |
sql |
select aitecd,'1' as shrjcd from TBL1 where not exists(select aitecd from TBL2 where TBL1.aitecd =TBL2.aitecd) |
sql |
WITH AAA (AA,BB,CC) AS (SELECT SYO,NEN,NO FROM xxx.xxxxT) SELECT AA,BB,CC FROM AAA |
sql |
SELECT CCD, GCD, KTYYM FROM TBL1 AS A WHERE A.KTYYM>="200604" AND NOT EXISTS ( SELECT CCD, GD, KTYYM FROM TBL2 B WHERE KTYYM="200604" AND A.GCD=B.GCD) select * from dept A where not exists( select 'X' from emp B where A.dept_id = B.dept_id ); |
sql |
CASE KBN WHEN '1' THEN 'グー' WHEN '2' THEN 'チョキ' WHEN '3' THEN 'パー' ELSE NULL END, |
sql |
select no, sum(case month(aat.ysnymd) when 04 then gk else null end) as "4月", sum(case month(aat.ysnymd) when 05 then gk else null end) as "5月", sum(case month(aat.ysnymd) when 06 then gk else null end) as "6月", sum(case month(aat.ysnymd) when 07 then gk else null end) as "7月", sum(case month(aat.ysnymd) when 08 then gk else null end) as "8月", sum(case month(aat.ysnymd) when 09 then gk else null end) as "9月", sum(case month(aat.ysnymd) when 10 then gk else null end) as "10月", sum(case month(aat.ysnymd) when 11 then gk else null end) as "11月", sum(case month(aat.ysnymd) when 12 then gk else null end) as "12月", sum(case month(aat.ysnymd) when 01 then gk else null end) as "01月", sum(case month(aat.ysnymd) when 02 then gk else null end) as "02月", sum(case month(aat.ysnymd) when 03 then gk else null end) as "03月", from waa002t |
db2cmd |
-c コマンドを実行してから終了します。たとえば、"db2cmd /c dir" というコマンドを使用すると、 "dir" コマンドがコマンド・ウィンドウに呼び出されてから、コマンド・ウィンドウがクローズします。 -w cmd.exe プロセスが終了するまで待機します。たとえば、"db2cmd /c /w dir" というコマンドを使用すると、 "dir" コマンドが呼び出され、コマンド・ウィンドウがクローズするまで、 db2cmd.exe は終了しません。 -i 同じコンソールを共用し、ファイル・ハンドルを継承して、コマンド・ウィンドウを実行します。たとえば、 "db2cmd /c /w /i db2 get dbm cfg > myoutput" を使うと、 cmd.exe が起動して DB2 コマンドを実行し、 完了を待機します。新しいコンソールは割り当てられず、stdout がファイル "myoutput" にパイプ接続されます。 -t "DB2 CLP" をコマンド・ウィンドウのタイトルに使用する代わりに、起動ウィンドウからタイトルを継承します。 これは、たとえば "db2cmd /t" を起動する異なるタイトルでアイコンを設定したい場合などに役立ちます。 |
bat |
a.bat db2cmd /c /w /i C:\temp\bat\b.bat > aaa.txt b.bat db2 -tvf connect.sql db2 -tvf reset.sql |
export | EXPORT TO C:\exp\tbl1 OF DEL MESSAGES C:\exp\tbl1.log SELECT * FROM tbl1; |
export |
export.bat db2cmd /c /w /i db2 -tvf D:\export.txt export.txt connect to DB user USER using PASS; export to D:\100t_hon.ixf of ixf messages D:\msgs.txt select * from 100t where ktyym in('200302','200303'); |
import |
import.bat db2cmd /c /w /i db2 -tvf D:\import.txt import.txt connect to DB user USER using PASS; import from D:\100t_hon.ixf of ixf messages D:\msgs.txt replace into 100t; import Linux->Win NT 文字化け回避 IMPORT FROM I:\temp\xxxx300t.ixf OF IXF MODIFIED BY forcein indexschema=ADMINISTRATOR MESSAGES I:\temp\xxxx300t_imp.txt REPLACE INTO xx.xxxx300T replaceはimport内容ですべて置き換える IMPORT FROM "xxx.ixf" OF IXF MODIFIED BY IDENTITYIGNORE COMMITCOUNT 10000 MESSAGES "msg.txt" INSERT INTO xxx; IDENTITYIGNOREを無効 |
オプション |
・フラグ 説明:デフォルト設定 -a SQLCA データを表示します。 :OFF -c SQL ステートメントを自動的にコミットします。 :ON -e{c|s} SQLCODE または SQLSTATE を表示します。この 2 つのオプションは相互に排他的です。 :OFF -f filename コマンド入力を標準入力ではなくファイルから読み取ります。 :OFF -l filename コマンドをヒストリー・ファイルに記録します。 :OFF -n 単一の区切りトークン内の改行文字を除去します。このオプションを指定しない場合、 改行文字はスペースで置換されます。このオプションは、-t オプションと共に使用する必要があります。 :OFF -o 出力データおよびメッセージを標準出力に表示します。 :ON -p 対話型入力モードのときにコマンド行プロセッサー・プロンプトを表示します。 :ON -r filename コマンドが生成した報告をファイルに書き込みます。 :OFF -s バッチ・ファイルまたは対話式モードでコマンドを実行中にエラーが発生した場合、実行を停止します。 :OFF -t セミコロン (;) をステートメント終了文字として使用します。 :OFF -tdx x をステートメント終了文字として定義し、使用します。 :OFF -v コマンド・テキストを標準出力にエコーさせます。 :OFF -w SQL ステートメント警告メッセージを表示します。 :ON -x 列名などのヘッダーなしでデータを戻します。 :OFF -z filename すべての出力をファイルにリダイレクトします。 これは -r オプションと似ていますが、出力の他にメッセージやエラー・コードも含まれます。 :OFF ・複数行にまたがるSELECT文を実行する -> 改行の前に '\' を記述する。 |
sql |
SELECT T1.GRPCD FROM xx.T0 T0 JOIN xx.T0 T1 ON T0.CORPCD = T1.CORPCD AND T0.GRPCD = T1.KKKGRPCD WHERE T0.CORPCD = 'xx' AND T0.KENGEN = '0000' |
sql |
i5 sql(1) = "SELECT T2.COLUMN_NAME, T2.COLUMN_HEADING, T2.ORDINAL_POSITION, " sql(2) = "T2.DATA_TYPE, T2.LENGTH, T2.NUMERIC_SCALE " sql(3) = "FROM QSYS2.SYSTABLES T1, QSYS2.SYSCOLUMNS T2 " sql(4) = "WHERE T2.TABLE_SCHEMA = T1.TABLE_SCHEMA AND ((T1.TABLE_SCHEMA='" & wlib & "') AND " sql(5) = " (T2.TABLE_NAME=T1.TABLE_NAME) AND (T1.TABLE_NAME='" & wtbl & "')) " sql(6) = "ORDER BY T2.ORDINAL_POSITION " udb sql(1) = "SELECT T2.NAME,T2.REMARKS,T2.COLNO,COLTYPE,LENGTH,SCALE FROM " sql(2) = "SYSIBM.SYSTABLES T1, " sql(3) = "SYSIBM.SYSCOLUMNS T2, " sql(4) = "SYSIBM.SYSTABAUTH T3 WHERE " sql(5) = "T2.TBCREATOR = T1.Creator " sql(6) = "AND T2.TBNAME=T1.NAME " sql(7) = "AND T1.CREATOR=T3.TCREATOR " sql(8) = "AND T1.NAME=T3.TTNAME " sql(9) = "AND T1.NAME = '" & UCase(Worksheets("main").Cells(31, 3).Value) & "' " sql(10) = "AND T3.GRANTEE = 'DB2INST1' " sql(11) = "ORDER BY T2.COLNO" sqlserver sql(1) = "SELECT T1.name,T1.max_column_id_used,T2.name,T2.user_type_id,T2.column_id,T2.max_length FROM " sql(2) = "sys.tables T1,sys.columns T2 WHERE " sql(3) = "T1.object_id = T2.object_id AND T1.name = '" & strTbl & "'" sql(4) = "ORDER BY T2.column_id" 167 varchar 56 int 106 dec 61 datetime select T1.name,T1.max_column_id_used,T2.name,T2.user_type_id,T2.column_id,T2.max_length FROM sys.tables T1, sys.columns T2 WHERE T1.object_id = T2.object_id AND T1.name = 'xxxx' ORDER BY T2.column_id |
sql | LOCK TABLE DEPARTMENT IN EXCLUSIVE MODE |
sql | INSERT INTO テーブル SELECT * FROM テーブル1 |
sql | INSERT INTO xx.T0 (aaa,bbb,ccc,ddd) VALUES (?,?,?,?) |
sql | CASE WHEN XXX IS NULL THEN '' ELSE XXX END AS YYYY, |
sql |
WITH HOLDは、カーソルを生成したトランザクションが終了した後でも そのカーソルを続行できることを指定します。 WITHOUT HOLDは、カーソルを生成したトランザクションの外部では、 そのカーソルを使用できないことを指定します。 WITH HOLDもWITHOUT HOLDも指定されない場合、WITHOUT HOLDがデフォルトとなります。 |
sql |
INSERT INTO xx.T0 (aaa,bbb,ccc,ddd) SELECT aaa, 'bbb',ccc,ddd FROM xx.T0 WHERE aaa ='xx' AND bbb='xx' AND ccc='xx' AND dd='xx' |
sql | >=#2003/04/24# WHERE (T.CRETMS>={ts '2003-04-24 00:00:00'}) |
sql |
SELECT xxxt.id, case (month(xxxt.ymd)) when 04 then 0 when 05 then 0 when 06 then 0 when 07 then 0 when 08 then 0 when 09 then 0 else 1 end as hanki from |
sql | select row_number() over(order by act.aitecd desc) , |
sql | select * from sys.databases |
sql | Oracle 追加 SQL 日付 変換to_date('" & wrow & "', 'yyyy/mm/dd hh24:mi:ss') |
sql | TRUNCATE TABLE (Transact-SQL) |
sql |
select * from tbl where id>=100 fetch first 5 rows only SELECT TOP(Z) * FROM X EXCEPT SELECT TOP(Z-1) * FROM X update aa a set a.c3=coalesce(a.c3,a.c3) where (a.c1, a.c2 ) in ( select c1,c2 from aa b where b.c1=0 order by c2 fetch first 5 rows only SELECT Y FROM (SELECT Y,ROW_NUMBER() OVER (ORDER BY Y) AS RowNumber FROM X ) AS T WHERE RowNumber = Z ) |
sql |
例:この EXCEPT の例は、T1 に存在し、T2 に存在しない行をすべて生成します。 (SELECT * FROM T1) EXCEPT ALL (SELECT * FROM T2) NULL 値が含まれていない場合、この例は次の例と同じ結果を戻します。 SELECT ALL * FROM T1 WHERE NOT EXISTS (SELECT * FROM T2 WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...) 例:この INTERSECT の例は、表 T1 と T2 の両方にあるすべての行を生成し、 重複した行を除去します。 (SELECT * FROM T1) INTERSECT (SELECT * FROM T2) NULL 値が含まれていない場合、この例は次の例と同じ結果を戻します。 SELECT DISTINCT * FROM T1 WHERE EXISTS (SELECT * FROM T2 WHERE T1.C1 = T2.C1 AND T1.C2 = T2.C2 AND...) ここで、C1、C2、などは T1 と T2 の列を表します。 |
sql |
DECLARE CURSORのWITH HOLDオプション CLOSEカーソルのWITH RELEASEオプション SELECTのFETCH n ROWS ONLY SET CURRENT ISOLATION (V8.1FP2) SET LOCKTIMEOUT (V8.2) SET KEEP UPDATE LOCKS (V8.2) |
alter |
ALTER TABLE xxx.xxxA100T ADD abc DEC ( 5,2 ) NOT NULL WITH DEFAULT ADD efg DEC ( 5,2 ) NOT NULL WITH DEFAULT; COMMENT ON xxx.xxxA100T ( abc IS '(計画)', ehf IS '(実績)') ; |
CALENDAR |
WITH CALENDAR(HIDUKE) AS ( SELECT CAST('2012/02/01'AS DATETIME) UNION ALL SELECT DATEADD(dd,1,A.HIDUKE) FROM CALENDAR A WHERE A.HIDUKE < DATEADD(DAY,-1,DATEADD(MONTH,1,CAST('2012/02/01'ASDATETIME))) ) SELECT HIDUKE,DATENAME(WEEKDAY,HIDUKE) FROM CALENDAR |
参照制約 sql |
select constname, tabname, refkeyname, reftabname, colcount, deleterule, updaterule,fk_colnames from syscat.references order by reftabname where tabname='xxx' |
参照制約 sql |
select t2.constname, t2.tabname, t2.refkeyname, t2.reftabname, t2.colcount, t2.deleterule, t2.updaterule,t2.fk_colnames FROM SYSIBM.SYSTABLES T1, syscat.references T2 where T1.Creator ='xxx' AND T1.NAME=t2.tabname and t1.tbspace='xxxSPACE' order by t2.reftabname |
参照制約 sql |
外部キー制約のチェック・ペンディング状態の確認と解消 select TABNAME,STATUS,ACCESS_MODE from SYSCAT.TABLES where STATUS='C' |
参照制約 alter |
ALTER TABLE xxx ADD CONSTRAINT xxx000 FOREIGN KEY(xxx_001,xxx_002) REFERENCES xxx (xxx_001,xxx_002) ON DELETE CASCADE; |
参照制約 alter |
ALTER TABLE xxx DROP CONSTRAINT xxx000; ALTER TABLE xxx DROP FOREIGN KEY xxx000 ;; |
create |
CREATE SEQUENCE ORG_SEQ START WITH 1 INCREMENT BY 1 NO MAXVALUE NO CYCLE CACHE 24 INSERT INTO seiseq (NEXTVALUE,COLNAME) VALUES (NEXTVAL FOR ORG_SEQ, 'test1') |
CREATE TABLE xxxxt ( systblno VARCHAR(4) NOT NULL , systblcd VARCHAR(20) NOT NULL , systblnm VARCHAR(100) , systblfree VARCHAR(200) , pms_i_ymd TIMESTAMP DEFAULT CURRENT TIMESTAMP NOT NULL, pms_i_usr VARCHAR(32) DEFAULT USER NOT NULL, pms_i_class VARCHAR(128) , pms_u_ymd TIMESTAMP , pms_u_usr VARCHAR(32) , pms_u_class VARCHAR(128) , CONSTRAINT PRI PRIMARY KEY (systblno, systblcd)); insert into xxxxt (systblno,systblcd,systblnm) values ('test','ak','') select * from waz010t where systblno = 'test' and systblnm = '' update waz010t set systblnm = null where systblno = 'test' select * from xxxxt where systblno = 'test' and systblnm is null |
|
command |
db2 list applications db2 list applications show detail/more db2 list applications for database XXdb show detail db2 'force application(Appl.Handle1, Appl.Handle2, ・・・)' db2 force applications all db2 ? force db2 list node directory db2 ATTACH to TCP0000 user inst1 using db2 |
command | db2 "load from /dev/null of del replace into TABLE nonrecoverable" |
command | C:\>db2look -d nnDB -u nn -a -e -t KOJIN -o aaa.sql -i db2admin -w db2admin |
command |
db2 BACKUP DATABASE XXDB ONLINE TO /home/java/data db2 RESTORE DATABASE XXDB FROM /home/java/data TAKEN AT 20040317143138 db2 ROLLFORWARD DATABASE XXDB TO END OF LOGS |
command |
インスタンス開始 db2start インスタンス終了 db2stop db2stop force db2stop -kill |
command |
db2 list tables db2 describe table tablename |
command |
get snapshot for locks on tbl; 照会系のロック:IN(Intent None), IS(Intent Share), NS(Next Key Share), S(Share) 更新系のロック:IX(Intent Exclusive), SIX(Share with Intent Exclusive), U(Update), NW(Next Key Weak Exclusive), X(Exclusive), W(Weak Exclusive), Z(Superxclusive) |
![]() |
|
command | get snapshot for database on XXXX | grep ロック |
ログ | SQL Server トランザクションログ |
データベース 'データベース名' のトランザクション ログがいっぱいです。 ログの領域を再利用できない理由を確認するには、 sys.databases の log_reuse_wait_desc 列を参照してください。 SQL Server 2005 |
|
Oracle | ローダー |
コマンド sqlload user/pass@bfdb.xxx.co.jp c:\bhi501f.ctl コントロールファイル LOAD DATA INFILE c:\hmload01.txt APPEND INTO TABLE APSIRMST FIELDS TERMINATED BY "," ( SIR_KAI_CODE CONSTANT "TEST1", SIR_CODE CHAR, SIR_SH_KNR_CODE CONSTANT "0000000000", SIR_BNR_CODE CONSTANT " ", SIR_NAME VARCHAR, SIR_NAME_K VARCHAR, SIR_NAME_S VARCHAR, SIR_JYOUTAI_KBN CONSTANT "1", SIR_ZAN_KNR_KBN CONSTANT "0", SIR_SH_TUTI_KBN CONSTANT "0", SIR_FC_HENKAN_CODE CONSTANT " ", SIR_MAX_KIN CONSTANT 0, SIR_IN_USR_ID CHAR, SIR_IN_STS_NO DECIMAL EXTERNAL, SIR_IN_DATE DATE "YYYY/MM/DD", SIR_RPL_USR_ID CHAR, SIR_RPL_STS_NO DECIMAL EXTERNAL, SIR_RPL_DATE DATE "YYYY/MM/DD", SIR_SPOT_KBN CONSTANT "0" ) |
|
データ型 |
SQL Server には、Oracle より多数のデータ型を使用できます。 以下に、SQL Server で使うことのできるデータ型を示します。 |
![]() |
|
リンク |
表の結合を極めるチューニング・テクニック(1-4) − @IT → ネステッド・ループ結合 オラクルが好き! - RDBMS入門 → FROM 句の後ろは大きい表順に記述しましょう! 表の結合(JOIN:ジョイン) → AND条件については、記述の逆順に実行されます ORACLE/オラクルSQLリファレンス(チューニング) SQLを速くするぞ―お手軽パフォーマンス・チューニング → サブクエリを引数に取る場合、IN述語よりもEXISTS述語を使う 抽出条件、JOIN句とWHERE句どっちに書きますか? - Database Expert会議室 Oracle tips SQL チューニング編1 - チューニングの方向、プログラムチューニング - SAK Streets パフォーマンス差異〜その2〜 SQL Serverデータパーティショニングで巨大DBも楽々管理 付加列インデックスの作成 |