2014-02-28 32 views
0

我正在使用此查询来提取products.the产品表有302,716 rows.it需要太多的时间来执行2-3分钟左右。但是,当我删除它的顺序需要更少的时间。通过在mysql中缓慢查询排序

SELECT DISTINCT 
    product.ProductID, 
    company.CompanyName 
FROM 
    product 
    INNER JOIN company 
    ON company.CompanyID = product.CompanyID 
    LEFT JOIN company_csv_data 
    ON company.CompanyID = company_csv_data.CompanyID 
    LEFT JOIN productcategory 
    ON product.ProductID = productcategory.ProductID 
    LEFT JOIN category 
    ON category.CategoryID = productcategory.CategoryID 
    LEFT JOIN supplier 
    ON product.supplier = supplier.id 
    LEFT JOIN template_vouchers tm 
    ON product.ProductID = tm.voucher_id 
WHERE company.turn_on = 1 
    AND product.ProductEndDate >= CURRENT_DATE 
    AND turn_off = 1 
GROUP BY product.ProductID 
ORDER BY clicks DESC, 
    product.CodeOpen DESC, 
    product.Online, 
    product.EntryDate DESC 
LIMIT 0, 15 
+0

什么是你的问题? – SebastianH

+0

执行大约3分钟需要太多时间。 –

+0

你试过索引吗? –

回答

1

您可以通过在选择和WHERE子句中为列创建索引提高了查询的速度/性能(这将插入放缓,DELETE和UPDATE语句。)

+2

呼吸有助于维持生命。谁支持这个? – fancyPants