の最適化に参加します。 例えば、データベース部門を管理する従業員の名前を見つけるために、あなたがこれを行うだろう:
名前( Mgr_ssn( DNAME = 'データベース'(学科))⨝ Mgr_ssn = SSN従業員) をのような何かをすることも同様に正しいことかどう
は、だから私は思ったんだけど:
名 ( Mgr_ssn( DNAME = 'データベース'(学科))⨝ Mgr_ssn = SSN( SSN、名前従業員))
これは、従業員は、他の多くの属性を持っている、もちろん想定しています。そうすることで、システムが、従業員の他のすべての属性に結びつくことを心配する必要がなくなるため、時間が節約できると思うでしょう。私はこれまでに結合の右側にこのような射影を見たことはありませんし、それが受け入れ可能か不必要なのか不思議です。リレーショナル代数は、私が参加する操作の多くが参加するの右側にテーブルを最適化し、そして唯一の左のように見えたことはありません学校のための私の教科書で見てきた
1
A
答えて
1
ほとんどのオプティマイザは深い加入左考慮システムR・オプティマイザを使用しています。そのため、右の結合が決して見られません。オプティマイザは、(オプティマイザが最善の解決策が見つからない、彼らは最悪のものを回避しようと)すぐに合理的に許容可能な解決策を見つけたいので
すべてのオプションの探索空間が指数関数的です。
P.S.左ディープ・ジョインを使用する理由は、結果をディスクに書き込む必要なくパイプライン化できるため、I/Oが節約されるからです。
1
まともなクエリオプティマイザは、処理されるデータを最小限に抑えるために、あまりにも時々突起部を適切な制限を押し下げ、となります。また、オプティマイザは自動的にそれを行い、結果は同一であるため、関係代数の式を最適化する必要は特にありません。二テーブルで
は、このような配列は、部門に参加する前に突起を形成することに利点があるであろうことは明らかではないが加わります。 E.SSN = D.Mgr_SSNを使用してEmployee内の単一の行を検索します(おそらく単一の)Dname = 'Database'を持つ部門を検索します。しかし、サブ式が複数回使用された場合は、それを実行する価値があります。
また、設計がひどいことにも注意してください。データベース設計の結合フィールドとしてSSNほど重要なものを決して使用しないでください。 PCIチームにはフィット感があります!しかし、おそらく、名前は長い昔の昔からの二日酔いですが、コンテンツは生成されたサロゲートであり、実際のSSNはEmployee.RealSSNに格納されています(暗号化されていても、承認されたユーザーだけがそれを選択できるように、列に対する権限も有効です)。
関連する問題
- 1. 左を書面で私を助けては、このために参加C#
- 2. 私は正しく私が作成した外部キーに参加することはできません
- 3. org.hibernate.AnnotationException:これは私がXMLを追加 に参加したいが、私は、コードを実行したとき、私はこれを見た上で表がある
- 4. Oracleでは、なぜSHスキーマまたはそのテーブルを見つけることができませんか?私はこのコードを持つ2つのテーブルを作成するよう求めています私の学校の割り当てで
- 5. 参加のテーブルにそれらの一つは、私は、クエリを書いた
- 6. 私がデータを検索し、その後、私のデータは、このように見えた場合、たとえば、私が参照できるリストのいくつかの種類にそれを追加したいのです
- 7. LINQは私がすべてのHOT_MEALSを一覧表示し、また HOT_MEALS_PRICEに参加したい参加
- 8. は、テーブルに参加して、私は2つのテーブルを結合する必要がある多くの
- 9. 私のページの右側に私の右側の列を浮かせるように見えません
- 10. 左が参加するが、私はこのテーブルを持っている
- 11. VBA参照し、私はそれは私がそれがする必要があるセルに追加するために取得することができた
- 12. マルチ左がSQLに参加 - 、plzは私のテーブルスキーマや、このSQLを最適化する方法を教えて、これは私のSQLであり、それは遅すぎるテーブルスキーマまたはSQL
- 13. が参加し、右側のmysqlに参加し
- 14. 私たちが見逃した `Quickblox`でグループコールに再参加できますか?
- 15. MapReduceOptionsBuilder()が見つかりませんでした。 MongoDbがコレクションに参加する
- 16. 私はクッキーを追加しました。追加されたのを見ましたが、そこにはもうありません。
- 17. '。'の近くの構文が正しくありません。でSQL Serverのテーブル値は、それは私がこのエラーをエラー与え 、私はテーブル値関数に参加しようとしています
- 18. は参加:列への参照は、私がCONT_IDパラメータで2つのテーブルに参加したい
- 19. &&(and)の背後にあるロジックは何ですか?私たちはそう書いたりええ、それが動作する場合、それは動作しますが、我々は唯一そう書いた場合(または)このコードで
- 20. MySQLを改善するには、私が参加してMySQLの入れ子の選択を改善するために多くのサンプルを見てきましたが、私はこのクエリのためにこれを把握することはできません
- 21. は、内側にはして参加したり、CodeIgniterの
- 22. 私は私が...質問のこのタイプは前に頼まれましたが、私は答えを自分で見つけるために、単語の右のセットを取得するように見えることができない特定のpython
- 23. gccでどの最適化が有効になっているかを知るには?私はあなたが使用してオンにされている最適化を見ることができることを見てきました
- 24. 私は私の最初のイオンアプリを実行しようとしているが、私はそれは私の携帯電話を見つけることができません。また、実行するためのエミュレータを見つけることができません。このエラーを取得していますいずれか
- 25. は、私はこの質問に異なる答えをたくさん見てきたし、私のプロジェクトに自分のコードを適用しようとしているが、これらのソリューションのどれも私が持っているデータのために働くように見えるんJSON
- 26. (私は私が探していた答えを見つけられませんでしたが、私は将来的にそれを持っていることが他の誰かのために自分の質問に答える試してみたいので、私は私の自己をそれを把握)参照
- 27. マルチキャストグループに参加できませんでした。そのようなデバイスはありません
- 28. FormatConvertedBitmap - この操作を完了するのに適したイメージングコンポーネントが見つかりませんでした。エラー
- 29. 私はプログラム的に私のレイアウトにビューを追加し、それらをアニメーション化していますので、ビューが正しく追加することが、私はアニメーションを開始するとき、ここで働いているように見えるdoes notのようで[OK]を動的に追加したビュー
- 30. あります。あまりにも多く、私は見つけることができませんそれ
システムRのプロトタイプ以降、オプティマイザが進化しました。 –