を実行するクエリに参加:Countは、私はこれらすべてのテーブルには約140KのRAW持って長い時間
SELECT COUNT(DISTINCT p.product_id) AS total
FROM bh_product p
LEFT JOIN bh_product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN bh_product_to_store p2s ON (p.product_id = p2s.product_id)
を、それは正常です。このクエリの実行には、約3秒かかりますか?
すべてのテーブルにproduct_idフィールドのインデックスがあります。
何とか改善できますか? 元のクエリ:更新
SELECT COUNT(DISTINCT p.product_id) AS total
FROM bh_product p
LEFT JOIN bh_product_description pd ON (p.product_id = pd.product_id)
LEFT JOIN bh_product_to_store p2s ON (p.product_id = p2s.product_id)
WHERE pd.language_id = '2'
AND p.status = '1'
AND p.date_available <= NOW()
AND p2s.store_id = '0'
AND (
pd.name LIKE '%душевые%'
OR pd.tag LIKE '%душевые%'
OR LCASE(p.model) = 'душевые'
OR LCASE(p.sku) = 'душевые'
OR LCASE(p.upc) = 'душевые'
OR LCASE(p.ean) = 'душевые'
OR LCASE(p.jan) = 'душевые'
OR LCASE(p.isbn) = 'душевые'
OR LCASE(p.mpn) = 'душевые'
)
:
はを更新しましたそれはそれは、SQL処理を遅くして、サーバが他の集約的なプロセスを実行していたことを考え出しました。 他のプロセスの電源をオフにした後、許容可能になります。
あなたは 'p.product_id'列に対するインデックスを持っているのですか? – Alex
@Alexはい、すべてのテーブルにPRIMARY、BTREE – Sol
というインデックスが付けられています。これは非常に奇妙なスキーマです。なぜ3つのテーブルに同じ 'PRIMARY'キーが必要ですか? – Alex