2016-10-03 8 views
1

これはMySQLのクエリの下にあります。膨大なデータを持つローカルホストではクエリがスムーズに実行されますが、ライブサーバーでは多くの時間がかかります。私はそれを最適化しようとしましたが、無駄でした。このコードをもっと簡単な言葉で書くことができますか? ヘルプは本当に感謝します。 LEFTについて2番目のテーブルにIDが存在しない2つのテーブルのMySQLクエリの最適化

SELECT id, Request_By, Org_Name, Branch_Name, SALES_PERSON, Is_Consignee, Is_Shipper, EmailId, Telephone, Credit_LimitRS, IE_Code_No, 
    PAN_No, Credit_limitDAYS, GL_Link 
    FROM mst_ship_con_newcust 
    WHERE (not EXISTS (SELECT * FROM mst_branch_info b where b.id = mst_ship_con_newcust.id)) 
    ORDER BY id desc 
+1

Plsのを試し、その後、両方のテーブルの上にidから始まるインデックスを持つようにしてくださいサーバーから説明し、また、私たちはそれを実行するサーバーを要するおおよそどのくらい知っているの結果を投稿クエリ、およびテーブル内のレコード数。 – Shadow

+0

私はデータを取得しますが、ライブサーバーで結果を表示するには約3分の1から4分かかります – Amlan

+1

Ok。 Plsは私たちに説明の結果を示します。それまでは純粋推測です。 – Shadow

答えて

0
SELECT id, Request_By, Org_Name, Branch_Name, SALES_PERSON, Is_Consignee, Is_Shipper, EmailId, Telephone, Credit_LimitRS, IE_Code_No, 
PAN_No, Credit_limitDAYS, GL_Link 
FROM mst_ship_con_newcust 
    LEFT JOIN mst_branch_info b ON b.id = mst_ship_con_newcust.id 
WHERE b.id IS NULL 
ORDER BY id desc 

何、このように登録しようか!

UPDATE:

SELECT id, Request_By, Org_Name, Branch_Name, SALES_PERSON, Is_Consignee, Is_Shipper, EmailId, Telephone, Credit_LimitRS, IE_Code_No, 
PAN_No, Credit_limitDAYS, GL_Link 
FROM mst_ship_con_newcust 
    JOIN mst_branch_info b ON b.id = mst_ship_con_newcust.id 
ORDER BY id desc 

は、それからちょうどid上の2つのテーブルを結合することは珍しいです

+0

ありがとうございます。しかし、mst_ship_con_newcust.idがb.idで終了しない場所を表示したいのですが、 – Amlan

+0

"LEFT"が出力を "not existing ... yet"に制限する必要があります。 –

0

を登録しよう。このスキーマ設計の歴史は何ですか?

SELECT y.id, y.Request_By, y.Org_Name, y.Branch_Name, y.SALES_PERSON, 
     y.Is_Consignee, y.Is_Shipper, y.EmailId, y.Telephone, 
     y.Credit_LimitRS, y.IE_Code_No, y.PAN_No, y.Credit_limitDAYS, 
     y.GL_Link 
    FROM 
    (
     SELECT n.id 
      FROM mst_ship_con_newcust AS n 
      LEFT JOIN mst_branch_info AS b ON b.id = n.id 
      WHERE b.id IS NULL 
    ) AS x 
    JOIN mst_ship_con_newcust AS y USING (id) 
    ORDER BY id desc 
関連する問題