の最適化に参加します。 例えば、データベース部門を管理する従業員の名前を見つけるために、あなたがこれを行うだろう:
名前( 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. が参加し、右側のmysqlに参加し
- 3. '。'の近くの構文が正しくありません。でSQL Serverのテーブル値は、それは私がこのエラーをエラー与え 、私はテーブル値関数に参加しようとしています
- 4. gccでどの最適化が有効になっているかを知るには?私はあなたが使用してオンにされている最適化を見ることができることを見てきました
- 5. は、私はこの質問に異なる答えをたくさん見てきたし、私のプロジェクトに自分のコードを適用しようとしているが、これらのソリューションのどれも私が持っているデータのために働くように見えるんJSON
- 6. FormatConvertedBitmap - この操作を完了するのに適したイメージングコンポーネントが見つかりませんでした。エラー
- 7. Zendのは、どのように私は左を作成するのです、私はこの左がクエリに参加回すにはどうすればよい
- 8. "この操作を完了するのに適したイメージングコンポーネントは見つかりませんでした。
- 9. は、コメントを追加したり、私がZend_Config_Writerにで遊んで、と私はそれは私が、私は以来、不穏ビットのフォーマットの欠如を見つけるやりたいことができますがしてきたZend_Config_Writerに
- 10. iOS版:適切な方法は、私がグーグルを試みたとiOSヒューマンインターフェイスガイドラインに見えたが、グループ化のUITableViewCellカスタムの内部UITextFieldのが必要であることを表示するためのベストプラクティスに関する何かを見つけるように見えることはできませんしているのUITableViewCell
- 11. アンドロイド - のTextViewが見え、その後、私はTextViewには見えないようにしたくない...]ボタンを
- 12. Rの一致列の名前と私は参加者の実験に関連する値を検索し、各実験における各参加者の参加のためにそれらを合計しようとしていた値
- 13. 私はなぜ、私は一緒に見えることができません:訪問したと::後?
- 14. は私が私のJavaをチェックアウトしてきた...私はどこかでこの質問への答えを見てきました知っているが、私はちょうど今それを見つけるように見えることはできませんJavaプロジェクト
- 15. 私たちのターゲットユーザー全員が参加した会議に出席するときに聞く/すること
- 16. ヘルプ私が探して試してみたが、私は私のerror_logにあり、次のエラーを見つけることができませんCGI.pm
- 17. テーブルの "ON"フィールドに参加する必要がありますか?私たちは、クエリをやっている
- 18. JPAは、私がお客様とBusinessUnitの間に多くの関係に多く持ってテーブルに参加
- 19. TFSホステッドビルドコントローラー - Microsoft.TextTemplating.targetsは、私が今日の問題をデバッグしてきたし、それを把握するように見えることはできません
- 20. テスト私はアプリ内課金についてかなり多くのことを読んで、テストが、私はまだいくつかの質問に対する答えを見つけることができませんでしたしました
- 21. 私はVS2015のCStringの値を見ることができません。私はそれを見るために何をすべきですか?
- 22. が同じテーブルから多くの1に参加して、
- 23. うなり声は、(これは私が得たものである)私はNode.jsの中でうなり声によって時計のタスクを実行しようとしたが、それは私のために動作しません
- 24. 私は現在、(私の学校のために)カジノゲームに取り組んでいますが、私は問題が発生していたActionScript 3.0
- 25. 私はSQLを学び、学校のシステムのために働いています
- 26. Googleは、私は、PHPのためdredit例の実行することはできませんあなたがここに見ることができるように、私はアプリへのアクセス権を付与することはできません
- 27. scipy.statsでrv_continuousにはMLEを見つけるための適合メソッドがありますが、rv_discreteはそうではありません。どうして?
- 28. (私はちょうど私の辞書が似ているフォーマットを表現するために、物事を使用しています、これはそれが実際にどのように見えるかではありません)tupled値
- 29. Javaの数学のSqrtは、私は、ウェブサイト上で検索し、この 私の問題は、私はそう私のアンドロイドアプリケーションにということであるように、私は問題を見つけられませんでしたNaNの
- 30. クッキーは、そのため私のウェブサイト上の一部の機能が動作しません、すべてのクッキーが書き込まれるように得ることができない...私は奇妙な問題が発生しました
システムRのプロトタイプ以降、オプティマイザが進化しました。 –