No.1ベストアンサー
- 回答日時:
普通に書けばいいんじゃないですか?
この構成なら商品コードに索引がついていると思うので。
実行計画もつけました。
UPDATE 売上T a
SET ( a.金額 )
=
(SELECT a.数量 * b.単価
FROM 商品M b
WHERE a.商品コード = b.商品コード
)
WHERE EXISTS (SELECT 'X'
FROM 商品M x
WHERE x.商品コード = a.商品コード
);
実行計画
----------------------------------------------------------
Plan hash value: 4109107743
--------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------
| 0 | UPDATE STATEMENT | | 1 | 10 | 3 (34)| 00:00:01 |
| 1 | UPDATE | 売上T | | || |
| 2 | NESTED LOOPS | | | || |
| 3 | NESTED LOOPS | | 1 | 10 | 3 (34)| 00:00:01 |
| 4 | SORT UNIQUE | | 1 | 3 | 1 (0)| 00:00:01 |
| 5 | INDEX FULL SCAN | IDX_商品M_0| 1 | 3 | 1 (0)| 00:00:01 |
|* 6 | INDEX RANGE SCAN | IDX_売上T_0| 1 | | 0 (0)| 00:00:01 |
| 7 | TABLE ACCESS BY INDEX ROWID| 売上T | 1 | 7 | 1 (0)| 00:00:01 |
| 8 | TABLE ACCESS BY INDEX ROWID | 商品M | 1 | 5 | 2 (0)| 00:00:01 |
|* 9 | INDEX RANGE SCAN | IDX_商品M_0| 1 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
6 - access("X"."商品コード"="A"."商品コード")
9 - access("B"."商品コード"=:B1)
統計
----------------------------------------------------------
0 recursive calls
1 db block gets
5 consistent gets
0 physical reads
0 redo size
696 bytes sent via SQL*Net to client
844 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
2 sorts (memory)
0 sorts (disk)
1 rows processed
この回答へのお礼
お礼日時:2008/06/20 09:09
回答どうもありがとうございます。
わざわざ実行計画まで付けていただき感謝します。
existsやinを使うのに不安があったのですが、これ見ると
当然のようですが、tableのscanではなくindex full scanとなっているようなので、性能上問題なさそうですね。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PostgreSQL PostgreSQL レコードからアイテム種類数を取得したい 2 2022/11/23 22:31
- 会計ソフト・業務用ソフト Excelで売上げデータの中の任意の商品の合計を出したい 3 2023/01/18 18:19
- 簿記検定・漢字検定・秘書検定 棚卸減耗損について 2 2022/05/19 04:48
- 簿記検定・漢字検定・秘書検定 簿記2級 売上原価の計算と期末商品の評価に関する質問 3 2023/06/24 23:50
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Visual Basic(VBA) VBAで質問があります 1 2022/10/19 10:32
- Excel(エクセル) エクセル 関数について 4 2022/08/05 11:03
- Amazon 新規でAmazon商品ページ作成方法について 1 2022/03/28 00:22
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
Accessユニオンクエリーで2つ...
-
SELECT時にカウントアップ
-
片方だけ抽出する方法(SQL)
-
SQL 2つのテーブルとSUBSTRING...
-
[Oracle] UPDATE分の副問い合わ...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
場合によって条件を変えるSQL
-
Sheet1$が存在致しませんとエラー
-
3つのテーブルから条件に一致し...
-
下記のsqlで取得されるレコード...
-
社内コードをソースコードに直...
-
主キーの変更
-
ACCESS2000でDCount関数の使い方
-
access初心者です。 アパレル...
-
Accessでフィールドを比較した...
-
行方向のデータを横に並べる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL 2つのテーブルとSUBSTRING...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
下記のsqlで取得されるレコード...
-
VIEWでテーブルの集計結果...
-
update文で質問です。 下記の条...
-
[Oracle] UPDATE分の副問い合わ...
-
片方だけ抽出する方法(SQL)
-
自分自身への矢印
-
連番のMin, Maxを取得したい
-
Accessユニオンクエリーで2つ...
-
日付の最大値を検索条件にする方法
-
Inner join と Left joinの明...
おすすめ情報