改进数据库查询执行时间的措施


Measures to improve execution time of a database query

使用twitter引导程序typeahead

我已经给出了typeahead的source中的php页面"getItems.php"的路径。

getItems.php从3个表中获取结果:-

SELECT pm . * , p.pname, pc.cid
FROM products p, products_mrp pm, products_category pc
WHERE p.pid = pm.pid
AND p.pid = pc.pid
AND p.pname like '%$text%' limit 7

执行此查询大约需要22秒。

  • 产品有654行
  • products_category表有629行
  • products_mrp表有712行

我能做些什么来减少提取时间?因为等待自动完成22秒是没有意义的。

首先,您的表上设置了索引吗?这是提高数据库速度的最简单的方法。请在此处阅读详细信息。

我建议使用位于此处的MySQL Tuning Primer脚本。非常易于使用&建议很到位。

根据你的设置,你可能需要学习如何手动调整性能——这意味着你要学会自己解释MySQL输出并对其采取行动——但这个脚本对我使用过的95%的设置都很有效。另外5%是数据库特有的设置,需要更多的定制。我强烈推荐MySQL性能博客上这样的教程。

需要更多信息。。。

为每个表显示CREATE TABLE。

各种xid是每个表中的主键吗?如果它们不是(也不是任何其他类型的指数),那么这就解释了这种疲软。

使用显式join,而不是"逗号联接"更干净:

FROM products p
JOIN products_mrp pm ON p.pid = pm.pid
JOIN products_category pc ON p.pid = pc.pid

希望你对这个问题有点惊讶。请参阅下面的文档,并确保输入数据库类型。4查询优化器概念