使用索引

时间:2016-11-28 09:33:10

标签: mysql

我有以下查询。我正在使用mysql数据库

Explain  
SELECT
  a.ProductID,
  a.ProductName,
  b.ShelfID,
  b.SCode,
  c.CompanyID,
  c.CompanyName,
  d.CategoryName,
  ProdCategoryID
FROM tblProduct a
LEFT OUTER JOIN tblShelfComp b
  ON a.ProductSID = b.ShelfID
INNER JOIN tblCompany c
  ON a.ProductCompId = c.CompId
LEFT OUTER JOIN tclCategory d
  ON a.CategoryID = d.CategoryID
ORDER BY a.ProductName

给予o / p

id  Select_type table   type    Possible_keys   Key Key_len ref rows    Extra
1   SIMPLE  a   ALL (NULL)  (NULL)  (NULL)  (NULL)  45850      Using where; Using filesort
1   SIMPLE  b   Eq_ref  PRIMARY PRIMARY 34  a. ProductSID   1   (NULL)
1   SIMPLE  c   Eq_ref  PRIMARY PRIMARY 34  a. ProductCompId    1   (NULL)
1   SIMPLE  d   Eq_ref  PRIMARY PRIMARY 34  a. CategoryID   1   (NULL)

此查询需要一段时间才能执行。所以我使用解释知道它是如何运作的。但是我无法确定如何处理这个结果。我需要采取哪些步骤来优化性能?

1 个答案:

答案 0 :(得分:1)

如果您不使用" ORDER BY"运行查询需要多长时间?如果这个时间大致相同,则查询没有优化的可能性。 (也许投资更好的硬件/更快的磁盘 - 或调整你的mysql服务器值进行优化?)

如果它快得多,您可以尝试在tblProduct.ProductName上创建索引。但是,如果这有帮助,那就不是了。