2016-10-18 4 views
0

これは私のクエリどのようにもmilionレコードmysqlのUNION TABLEクエリをスピードアップするには?

SELECT * FROM (
     SELECT simple_sku, picture_url, product_name, discounted_price, tracking_link, 'Lazada.co.id' AS table_identity 
     FROM `list_lazada` 
     UNION 
     SELECT id_product, picture_url, product_name, sale_price, tracking_link, 'Simulation.com' AS table_identity 
     FROM `list_simulation` 
    ) AS big_table 
    WHERE product_name LIKE '%$search%' ORDER BY big_table.discounted_price ASC 
    LIMIT 12 "; 

は今のphpMyAdminでPHPを開発しています。

すべてのテーブルには4つの色空間しかありません

どのように高速化するのですか?

+0

どのようなインデックスを設定していますか?私はproduct_nameのインデックスを作成します。これは、a)両方のテーブルに共通で、b)where句で使用されます。 – jeff

+0

@jeffユニオンテーブルにインデックスを追加する方法は?助けてください –

+0

@ドリューあなたはクエリを書くことができますので、私はそれを試すことができます –

答えて

1

あなたは外側のサブクエリ必要はありません。私はあなたのLIKE条件が全表スキャンで、その結果、使用できないproduct_name列に索引をレンダリングすると思い

SELECT simple_sku, picture_url, product_name, discounted_price, tracking_link, 
     'Lazada.co.id' AS table_identity 
FROM `list_lazada` 
UNION 
SELECT id_product, picture_url, product_name, sale_price, tracking_link, 
     'Simulation.com' AS table_identity 
FROM `list_simulation` 
WHERE product_name LIKE '%$search%' 
ORDER BY discounted_price ASC 
LIMIT 12 

を。しかし、検索アプローチを改善してインデックスを活用することができます。

+0

古いクエリ 0 - 11行目を表示しています(合計12、Query took 116.0073 sec)[discounted_price:4000 - 15000] –

+0

0〜11行(合計12件、クエリで18.1356秒) –

+0

でしたが、結果は異なる –

関連する問題