搜索查询慢,记录集基于视图。如何加快速度?

时间:2013-05-21 14:17:12

标签: php mysql search

我有一个基于MySQL中的视图的记录集,我用它来返回搜索结果,但它很慢(一直是21秒!)。在同一环境中进行类似搜索的时间不到一秒。

我担心由于我有四个左连接和一个子查询可以在搜索中提供相关数据,因此视图会减慢速度。

使用视图时是否有加快查询的一般指导?我已经研究了索引,但在视图中似乎不允许MySQL。

提前感谢任何建议。

创建我的观点的代码:

CREATE VIEW vproducts2 AS  
SELECT products2.productid, products2.active, products2.brandid,
    products2.createddate, products2.description, products2.inventorynum,
    products2.onhold, products2.price, products2.refmodnum, products2.retail,
    products2.sefurl, products2.series, products2.sold,
    `producttype`.`type` AS type, categories.category AS category,  
    `watchbrands`.`brand` AS brand, productfeatures.productfeaturevalue AS size,  
    (SELECT productimages.image
        FROM productimages
        WHERE productimages.productid = products2.productid
        LIMIT 1
    ) AS pimage  
FROM products2  
    LEFT JOIN producttype ON producttype.typeid = products2.typeid  
    LEFT JOIN categories ON categories.categoryid = products2.categoryid  
    LEFT JOIN watchbrands ON watchbrands.brandid = products2.brandid  
    LEFT JOIN productfeatures ON productfeatures.productid = products2.productid
        AND productfeatures.featureid = 1   

1 个答案:

答案 0 :(得分:0)

您需要确保在底层表上有索引,而不是在视图上。视图应该使用这样的表。

第一个尖叫的指数是productimages(productid, productimage)。这将加快select子句中的子查询。

您还应该拥有所有表中主键的主键索引。 。 。 categories(categoryid)producttype(typeid)watchbrands(brandid)和(我认为)产品功能(productid,featureid)。