No.4ベストアンサー
- 回答日時:
まずは簡単な事からやっていけ良いのでは。
Aテーブル(マスタ)項目1,項目2,項目3
Bテーブル(サブ参照用1)コード,名称
Cテーブル(サブ参照用2)コード,名称
上記テーブルよりデータを検索するとします。
select
A.項目1,A.項目2,A.項目3,B.名称,C.名称
from A,B,C
where
A.項目1 = 条件 AND --マスタの抽出(1)
A.項目2 = B.コード(+) AND --マスタとBテーブル(2)
A.項目3 = C.コード(+) --マスタとCテーブル(3)
実行結果の件数はAテーブルの(1)の結果件数です。
次にマスタからBテーブルより名称を取得します
条件は(2)となり(+)によりなければ空白が名称
となります。
(3)は(2)と同じで参照先が異なります。
Where句の順番はマスタから記述。
それとテーブル間はプライマリを記述そして複数
項目の場合はテーブル構成の順番通りに記述する。
この為,高速化の目的で別インデックスを作る。
ただし読込みが早いと書込みが遅い事を忘れずに。
あとは色々勉強してみて下さい。
(説明悪いかな)
この回答への補足
詳しい説明、ありがとうございました!
分からない箇所が3つあり、
>テーブル間はプライマリを記述
プライマリは分かりますが、テーブル間とはどういうことでしょうか?
>ただし読込みが早いと書込みが遅い事を忘れずに。
DBのことでしょうか?読み込み、書き込みとは?
>複数項目の場合はテーブル構成の順番通りに記述
SELECT句の部分ですよね?
もし回答いただけるのでしたら幸いです・・・。
その後は、自分で勉強してみますので!
No.5
- 回答日時:
「あくまでも適当な一例」とのことでしたが、気になった点がありますのでお伝えします。
開発の職場で古くから語り継がれているノウハウ(どっちのテーブル=の左に・・・など)の中には、古いOracleの仕組みを元にしていることがよくあります。
だから、「教えを守ってSQLを書いたのに本当に効果があるんだろうか?」という話になってしまいます。
そんな経験はありませんか?
古い仕組みとはルールベース・オプティマイザで
これに対してコストベース・オプティマイザ
簡単に言ってしまうと、
SQL文の書き方ひとつで、
・性能に大きく影響するのがルールベース
・性能にあまり影響しないのがコストベース
いまどきルールベースで運用されているDBはほとんどありませんが、この2つの違いを理解していないと、いろんな情報に惑わされてしまいます。
まず、この2つの違いを理解しておくことをおすすめします。
それからコストベース・オプティマイザでは、
「統計情報の収集」がきちんと定期的に実施されているかどうかが、SQLの性能に大きく影響します。
質問者さんが使っている環境には、DB管理者がいるでしょうか?それとも管理者不在でしょうか?
DB管理がしっかりしていれば、他の人はあまり気にしなくてもよいのですが、「統計情報の収集」がどういったタイミングで実施されているか、把握しておくことをおすすめします。
なお、収集はOracleバージョンによって、明示的な実行が必要だったり、Oracleが自動でやってくれたり、いろいろです。
以上です。
SQLの性能に非常に大きく関係しますので、SQLのチューニングを覚えるより前に、ぜひ理解しておきましょう。
No.3
- 回答日時:
かなりレベルが高いですが
(初心者向けの回もあります)
このメルマガは非常に役立ちます
参考URL:http://www.insight-tec.com/mailmagazine/ora3/vol …
No.2
- 回答日時:
基本的な事ってどのくらい基本から書けばいいのか。
。。それこそ本書ける位の分量になるので。
SQL以前にデータ構造や、適切なインデックスとかを設計してます?
この回答への補足
B設計に関しては知識がありません。PG歴8ヶ月ですので、コーディングしかしたことありません。今まで、SQLは他の人が既に作成済であったり、他のソースからコピーしてきたりして何とかしていました。人任せにしてきてしまい、基本的なところから分かっていないため、質問させていただきました。
>基本的な事ってどのくらい基本から書けばいいのか。。。
広い分野で質問をしてしまったようで、申し訳ありません。
基本的なところとは、私が例に挙げているようなことがあれば、教えて頂きたいということです。
No.1
- 回答日時:
DBのチューニングは多岐に渡るのでここではとても説明できません。
SQLのチューニングなら...
http://www.atmarkit.co.jp/fdb/index/index-db.htm …
まずは読み込む件数そのものを減らす工夫からはじめてみては。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle SQL update方法 2 2022/06/22 14:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle 質問です。 下記のテーブルとデータがあり、 取得想定結果のように出力したいです。 下記のsqlだと0 2 2023/05/23 19:10
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
請求と入金のテーブルの作成の...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
Accessリレーションシップ
-
片方だけ抽出する方法(SQL)
-
場合によって条件を変えるSQL
-
履歴を管理するテーブル構造に...
-
アクセス2003 SQL2000を使用し...
-
SQL 件数取得を速くしたい
-
ADOでSeekメッソッドが使えませ...
-
Accessのリンクテーブルについて
-
【PostgreSQL】行の値の並びを...
-
エクセル
-
ACCESSのSQLで、NULLかNULLでな...
-
ManagementStudioからのデータ削除
-
一部重複しているレコードの削除
-
別のテーブルの値を抽出条件と...
-
ACCESS 一番最新の日付の金額...
-
レプリケーションしているテー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「マスタ」と「テーブル」の違...
-
2つのテーブルから条件に一致...
-
重複するキーから一番古い年月...
-
ACCESS 一つのフィールドに複...
-
PLSQLの識別子エラー
-
主キーの変更
-
Accessでフィールドを比較した...
-
SQL 2つのテーブルとSUBSTRING...
-
続.ORACLEのSELECTのソートに...
-
行方向のデータを横に並べる
-
下記のsqlで取得されるレコード...
-
VIEWでテーブルの集計結果...
-
update文で質問です。 下記の条...
-
[Oracle] UPDATE分の副問い合わ...
-
自分自身への矢印
-
片方だけ抽出する方法(SQL)
-
Accessユニオンクエリーで2つ...
-
連番のMin, Maxを取得したい
-
Inner join と Left joinの明...
-
日付の最大値を検索条件にする方法
おすすめ情報