60万件のレコードを持つ複数のテーブルからデータをフェッチしています。しかし、それを取得するのに非常に多くの時間がかかります。取得にかかる時間を短縮する方法を教えてください。私もLIMITケースを使用しましたが、それでも改善はありません。
私の質問は:
SELECT DISTINCT
tf_history.thefind_id,
tf_product.product_id,
tf_product.`name`,
tf_product.product_url,
tf_product.image_tpm,
tf_product.image_thefind,
tf_product.image_accuracy,
(SELECT MIN(tf_h.price)
FROM tf_history AS tf_h
WHERE tf_h.thefind_id = tf_history.thefind_id) as price,
oc_product.price AS priceTPM
FROM tf_product
LEFT JOIN tf_history ON tf_product.product_id = tf_history.product_id
AND tf_product.thefind_id = tf_history.thefind_id
LEFT JOIN oc_product ON tf_product.product_id = oc_product.product_id
WHERE tf_product.product_id = @product_id
私のテーブル:
tf_history
history_id int(11) NO PRI auto_increment
thefind_id int(11) NO
product_id int(11) NO
price decimal(15,4) NO
date datetime NO
AND
tf_product
thefind_id int(11) NO PRI auto_increment
product_id int(11) NO
name varchar(255) NO
store_id int(11) NO
product_url varchar(255) NO
image_tpm varchar(255) NO
image_thefind varchar(255) NO
image_accuracy int(3) NO
date datetime NO
しかし、私がこのクエリを使用するとき:
SELECT * from tf_history
0.641秒で結果が得られましたが、何が問題になる可能性がありますか?レコードが少なくなると、最初のクエリはスムーズに実行されました。