一个人的互联网连接会影响sql查询或php解析的速度吗?

时间:2013-08-30 08:08:35

标签: mysql

我通过保存耗时太长的查询开始使用Zend_Db_Profiler进行基准测试。对于一个用户,此查询:

SELECT chapter, order, topic, id, name
FROM topics
WHERE id =  '1'
AND hidden =  'no'

花了2.97秒。我进行了一次解释:

select_type table  possible keys  key   key_len  ref    rows   Extra
SIMPLE      topics     id          id      4     const   42     Using Where

并自己从phpMyAdmin运行查询,它只用了0.0108秒。我想也许表的大小可能有效,因为有一列varchar和8000个字符长,但它不是Select的一部分。我也刚刚切换到半专用托管,但无法想象这会产生负面影响。任何关于我如何排除故障的想法都将不胜感激。

3 个答案:

答案 0 :(得分:3)

没有。 PHP和MySQL是服务器端技术,这意味着您的服务器处理它们并且与客户端无关。如果您的服务器速度很慢,那么将响应返回给客户端的速度会慢一些。

答案 1 :(得分:2)

由于PHP和SQL都在服务器端运行,因此用户的Internet连接不会影响查询的速度。 也许数据库服务器当时加载太多,无法及时传递查询。

答案 2 :(得分:2)

可悲的是,你关于瓶颈的前提是不对的。此外,在测试一个查询在浏览器中的行为,然后在PHPMyAdmin(或任何其他GUI)中的行为时,您必须先清除查询缓存,然后再尝试再次执行相同的查询。你没有提到你是否这样做过。

跟踪可能出错的第二部分包括确认数据库的配置变量已经过最佳设置,选择了合适的存储引擎,以及您的索引策略是否最佳(例如选择INT为主键而不是VARCHAR和类似的暴行。)

这意味着在大多数情况下,你会使用InnoDB存储引擎。它是免费的,如果进行了优化,它会很快(名为innodb_buffer_pool的服务器变量在设置为适当的大小和有足够的RAM时会产生奇迹)。看到你说你使用半专用托管意味着你无法控制那些配置变量。

只有当你确定

1)您没有从缓存中测试相同的查询
2)你已经尽力做到最优化(这包括确保你没有恶意进程强奸你的服务器)。

只有这样,您才能假设服务器和客户端之间的通信可能存在错误。