PHP,MySQL性能和效率方案

时间:2013-02-02 07:43:30

标签: php mysql performance

简化方案:

  1. 我有一张约100,000行的表格。
  2. 我需要根据特定条件选择约300-400行,以便在网页上显示。
  3. 考虑到上述情况,您会推荐以下哪种方法?

    方法1 :只使用一个数据库查询将整个表选择为一个包含100,000行的大数组。使用循环,从阵列中挑选所需的300-400行并将其传递给前端。数据库服务器上的最小负载,因为它只是一个查询。在PHP上加载更多,因为它必须存储和搜索100,000个数组。

    方法2 :使用循环,PHP将为每行所需数据生成一个新查询。收集所有数据将需要300-400个独立查询。服务器上的负载更多。与方法1相比,PHP上的负载较小。

    意见/想法将不胜感激!

3 个答案:

答案 0 :(得分:2)

对于MySQL rdbms,

100,000行是少量的。

您最好对数据库服务器进行微调。 所以我建议不要1也不要2。

只需:

SELECT * FROM `your_table` WHERE `any_field` = 'YOUR CRITERIA' LIMIT 300;

当您的数据超过1,000,000行时,您应该考虑强索引优化,也许您必须为复杂的选择创建存储过程。我保证在任何情况下都不是PHP的工作。

答案 1 :(得分:0)

正如您的问题来自Performance prospective,您的两种方法都会消耗一些资源。在这种情况下,我仍然会选择approach 1,因为它不会一次又一次地查询数据库,如果您为每一行生成查询,即300-400个查询。在大型项目设计方面,数据库始终成为瓶颈。

老实说,两种方法都不好。良好的做法是拥有良好的数据库设计和查询选择。您尝试实现的目标可以通过合适的查询来完成。

答案 2 :(得分:0)

使用PHP循环数据实际上是一个坏主意,毕竟,数据库设计来执行查询。 PHP将需要遍历所有记录,并且不使用索引来加快速度;这大致相当于数据库中的“表扫描”。

为了从数据库中获得最大的性能,有一个好的设计和(例如)在正确的列上创建索引是很重要的。

另外,如果您还没有确定要使用哪种RDBMS,根据您的使用情况,某些数据库有更高级的选项可以帮助提高性能(例如PostgreSQL支持地理信息)

Pease提供一些实际数据(将存储哪种数据,哪种字段)以及需要执行的查询/过滤器类型的样本,以便人们能够为您提供实际答案,而非假设