これはパフォーマンスに関する質問です。msqlクエリまたはmysqlビュー
テーブル名私は、次のMySQLのデータ(同じ構造の1,000以上のレコード)を考えてみましょう:私は労働者の要約と1つのクエリを実行する場合は時間
Employee | Hours | Scope | Project
John 4 labour projId_A
John 3 Travel projId_A
Mark 4 labour projId_A
Mark 2 Travel projId_A
はそれがより良いパフォーマンスですこの
テーブル名を取得するために旅行する人:プロジェクト(私はプロジェクトや時間に参加左ます)
Project | labourHrs | travelHrs
projId_A 8 5
または私たちはそれより良い
- にのみtravelHrs を示す図を作成するだけlabourHrs
- を示す図を作成することです
その後2つのジョイント・プロジェクトを作成する - > labourHとプロジェクト - > travelH
取得する:
Project | labourHrs | travelHrs
projId_A 8 5
私は、私は、プロジェクトのクエリ内またはlabour_view内の和を行うために良いパフォーマンスですか?& travel_view '
何か考えていますか?
私の経験では、VIEWSはパフォーマンスを助けることはありません(他の人が同じクエリのバージョンを悪化させる可能性を減らすことはできません)。また、MySQLが結果をテーブルのように「結合」するだけでなく、ビューが使用されているクエリとそれらの背後にあるクエリを、予測された方法で統合することを試みるため、デバッグが非常に困難になりがちです。 (単純な例: 'SELECT * FROM aTable'クエリをview1と呼ぶビューとして、' SELECT * FROM view1 WHERE id = 1'を実行すると 'aTable'からすべてを選択することはありません。 ) – Uueerdo