私は大きなテーブル私は、検索に使用するクエリを最適化する必要があります(多言語テーブル)を持っているmysqlのクエリのチューニングは
テーブルの構造は次のとおりです。
table products
productID
code
price
table products_lang
productID
lang
product_name
sub_title
status
テーブルは、今、私はPRODUCT_NAMEを検索したい場合は、私は次のクエリ
SELECT DISTINCT(p.productID)
FROM products as p
INNER JOIN products_lang as l ON
l.productID=p.productID
AND lang='en'
WHERE
(l.productName LIKE '%keyword%')
AND l.status = '1'
ORDER BY p.price desc
LIMIT 0,10
を使用240.000レコードの各
を持っています10
私は、クエリに一致するだけのIDを取得し、その後、私はこれらのIDは何か
を取得するためproducts_langが唯一のものは、上記のクエリがあまりにも多くの
で2-3秒を必要としていることであるクエリのクエリからは、私は
SELECT DISTINCT(l.productID)
FROM products_lang as l
WHERE
l.lang='en'
AND (l.productName LIKE '%keyword%')
AND l.status = '1'
LIMIT 0,10
をproducts_langに直接検索を行う場合ははるかに高速ですが(私は、JOINを削除しているので)私はp.priceのDESC BY
をORDERを持っていない誰も私が何を助けることができますがクエリの高速化またはクエリの中断小さな2は、クエリ時間を最小限にするために、いくつかのフィルタ条件
INDEX your_name (status ,productName ,productID)
の周り()
おかげで
に参加するの
EXISTS
を使用しよう?...あなたのスキーマが表示されてください。 – scaisEdge