我有一個大表(多語言表),我需要優化我搜索使用的查詢的MySQL查詢優化
表的結構是:
table products
productID
code
price
table products_lang
productID
lang
product_name
sub_title
status
的表,現在有240.000記錄每個
當我想尋找這裏給我用下面的查詢
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
從查詢我只得到匹配查詢,然後我只查詢這些ID來獲得其它任何事情products_lang的IDS
的事情是,上面的查詢需要2-3秒是太多
如果我做搜索直接products_lang
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
的速度要快得多,但我沒有ORDER BY p.price遞減(因爲我已經刪除JOIN)
誰能幫我做的查詢速度更快或中斷查詢在2個較小的,以儘量減少查詢時間
感謝
你對product_lang狀態指數?..顯示您的模式請 – scaisEdge