[PHP-PDO是什么让我的查询变慢?

时间:2015-10-15 04:54:49

标签: mysql

我们正在开发一个私人论坛解决方案,我们有一个"帖子"它有:

  1. 1索引(主键)
  2. 唯一密钥(即相应帖子的slug / seo-url)
  3. 2 FOREIGN Keys(提及帖子类别和帖子OP的类别(id)和用户(id)。
  4. 现在,ID(主键),类别(id)和用户(id)都是INT(11)UNSIGNED,我们使用了以下内容,我们在0.2XX秒内得到结果(在PHP页面上):< / p>

    • 使用PHP PDO
    • 使用PHP-MySQLi
    • 将PHP PDO与持久连接和缓冲查询一起使用

    查询:两者的性能几乎相同(范围为0.17-0.2XX秒)

    1. 从帖子,类别,用户中选择行,其中post.userid = user.id和post.categoryid = category.id和post.id = 1; - &GT;结果平均为0.17至0.28秒
    2. 从INDNER JOIN类别中选择SELECT on post.categoryid = category.id在post.userid = user.id上的INNER JOIN用户 - &gt;标签出价比之前更快但速度较慢。
    3. 现在,当我们使用MyBB或PHPBB时,作为测试的一部分,这些内容会加载所有查询,包括选择会话,更新该行并在0.2秒内插入。那些软件到底在做什么?

      我们使用PDO Connection,Prepare,然后绑定execute.same for MySQLi。

      作为前进步骤,我在一个视图中创建了一个包含所有3个表中所有必要列的视图,但这又提供了相同的性能。

      我做错了什么,单个查询占用0.18-0.2XX秒,而完整页面显示更快(超过1选择+更新+选择)更快。

      案例:MyBB / PHPBB和定制论坛都在同一台机器上使用,具有相同的PHP-MySQL配置,只有2个用户同时访问该站点(1个用户使用2个不同的浏览器)

1 个答案:

答案 0 :(得分:0)

  

我做错了什么

你正在寻找完全错误的方向。您采取的每项措施都与查询性能无关。

您需要做的是研究给定查询的EXPLAIN输出,并相应地设置索引,以使这些查询使用所有相关表的索引。