我有一个大表(多语言表),我需要优化我搜索使用的查询的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