在两个非常大的表上优化我的查询

时间:2013-04-12 11:06:58

标签: mysql performance optimization query-optimization

我有2个表第1个表名cjfeeds另一个名字是linkshare我的2个表包含多达40万个记录。所以我的选择查询需要12到15分钟来获取我的单个记录。

以下是我现在的查询:

SELECT SUM(SPRICE) AS Tot, MIN(SMIN) AS Min 
FROM 
   (SELECT COUNT(LS.SALEPRICE) AS SPRICE, MIN(LS.SALEPRICE) AS SMIN 
    FROM `linkshare` LS 
    WHERE LS.`PRODUCTNAME` LIKE 'DVS Men\'s Comanche Skate Shoe%' 
    UNION 
    SELECT COUNT(CJ.PRICE) AS SPRICE, MIN(CJ.PRICE) AS SMIN 
    FROM `cjfeeds` CJ 
    WHERE CJ.NAME LIKE 'DVS Men\'s Comanche Skate Shoe%' ) 
   AS xyz

我的问题: 我是为价格字段创建索引键。我该如何使用此查询?

另外,我如何优化查询性能?

我的解释查询如下:

And here's how an explain looks:

请告知

1 个答案:

答案 0 :(得分:2)

首先,没有使用索引。在LS.PRODUCTNAME和CJ.NAME上添加索引。

还怀疑你想要一个UNION ALL,可能是COUNT(*)而不是COUNT(fieldname)。

价格指数不太可能有所帮助。

从长远来看,将产品名称拆分为不同的表可能会更好,表中的行指的是产品表的ID。