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

时间:2014-04-18 05:54:26

标签: php mysql sql performance twitter-bootstrap

使用twitter bootstrap 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秒是没有意义的。

3 个答案:

答案 0 :(得分:0)

希望你对这个问题做了一些调查。 请参阅以下文档,并确保输入数据库类型。 4 Query Optimizer Concepts

答案 1 :(得分:0)

需要更多信息......

为每个表显示CREATE TABLE。

各个xid是每个表中的PRIMARY KEY吗?如果它们不是(也没有任何其他类型的指数),那么这将解释这种迟缓。

使用显式JOIN更清晰,而不是“逗号加入”:

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

答案 2 :(得分:0)

首先,您是否在表上设置了索引?这是提高数据库速度的绝对最简单的方法。 Read up on the details here

我建议使用MySQL Tuning Primer Script located here。非常容易使用&这些建议非常适合。

根据您的设置,您可能需要了解如何通过手动进行性能调整 - 这意味着您将学会自己解释MySQL输出并对其进行操作 - 但此脚本可以很好地用于我曾经使用它们的95%的设置。另外5%是数据库特性设置,需要更多的自定义护理。我强烈推荐像this one on the MySQL performance blog这样的教程。