2017-11-17 6 views
0

私は以下のクエリを実行しますが、パフォーマンスを向上させたいと考えています(パフォーマンスは賢明です):どのように私は結合をマージできますか?

sentence_idと。 project_idはインデックスです。

ここでの目標は、同じテーブルの2つの結合を1つにマージしようとすることです(可能な場合) どうすればいいですか?

SELECT rs.project_id, 
       ms.id AS raw_sentence_id, 
       rs.sentence AS raw_sentence_text, 
       rs.sentence_id AS raw_sentence_text_id, 
       rst.tokens AS tokenization_information, 
       ns.sentence_id AS normalized_sentence_id, 
       ns.sentence AS normalized_sentence_text, 
       nst.token_indices 
      FROM manual_sentences ms 
      JOIN sentences rs ON (ms.original_sentence_id = rs.sentence_id AND rs.project_id = 623483) 
    LEFT JOIN sentence_tokens rst ON (ms.original_sentence_id = rst.sentence_id AND rst.project_id = 623483) 
      JOIN sentences ns ON (ms.sentence_id = ns.sentence_id AND ns.project_id = 623483) 
    LEFT JOIN sentence_tokens nst ON (ms.sentence_id = nst.sentence_id AND nst.project_id = 623483) 
    WHERE ms.project_id = 623483 

答えて

0

あなたは接続詞を使っていることを行うことができるはず:

SELECT rs.project_id, 
       ms.id AS raw_sentence_id, 
       rs.sentence AS raw_sentence_text, 
       rs.sentence_id AS raw_sentence_text_id, 
       rst.tokens AS tokenization_information, 
       ns.sentence_id AS normalized_sentence_id, 
       ns.sentence AS normalized_sentence_text, 
       nst.token_indices 
      FROM manual_sentences ms 
      JOIN sentences rs ON (ms.original_sentence_id = rs.sentence_id AND rs.project_id = 623483) 
    LEFT JOIN sentence_tokens rst ON (ms.original_sentence_id = rst.sentence_id AND ms.sentence_id = rst.sentence_id AND rst.project_id = 623483) 
      JOIN sentences ns ON (ms.sentence_id = ns.sentence_id AND ns.project_id = 623483) 
    WHERE ms.project_id = 623483 
+0

ms.original_sentence_idとms.sentence_idは異なる場合があります。そして、彼らは私は2つの別々の行からの情報が必要なとき –

+0

その場合、私はあなたが2つの結合が必要と思う。 –

関連する問題