【问题标题】:What is the maximum records I should fetch from a MySQL database?我应该从 MySQL 数据库中获取的最大记录是多少?
【发布时间】:2012-10-03 10:21:17
【问题描述】:

我的服务器运行缓慢,因为我试图从 MySQl 数据库中获取 200 条记录(使用 PHP)。它们是我需要显示的帖子,我知道这是我的错误,因为当我尝试获取 1 条记录时速度很快,而 200 则大大减慢了速度。

这是一个已知问题吗,获取太多条目会导致问题?

【问题讨论】:

  • 我想说问题可能出在您的 SQL 查询上,而不是 DBMS 本身。没有看到查询,没什么好说的。
  • 您是否考虑过 SQL 代码运行缓慢,尽管最终的行数是多少?
  • 这仅取决于您获取的方式。通常可以毫无问题地获取数千条记录,即使在 PHP 中也是如此(只是不要一次将它们放入内存中)。
  • 如果您将结果集呈现到 PHP 页面,这可能是您的问题所在,而不是实际的 MySQL。
  • 需要注意的是,许多数据库扩展的默认行为是将整个结果缓冲在内存中。不推荐使用的mysql_query 缓冲结果,需要mysql_unbuffered_query 来避免这种情况; mysqli_query 默认调用mysqli_store_result 并且需要显式传递MYSQLI_USE_RESULT 结果模式以避免缓冲。 PDO 似乎默认使用无缓冲结果。

标签: php mysql


【解决方案1】:

您的 PHP 代码必须是一个复杂的函数,每次都为每条记录循环。所以它应该运行 200 次。这会减慢页面响应时间。在 MYSQL 中获取 200 条记录完全没有问题。如果您在 MySql 终端中运行,它将立即运行..

【讨论】:

  • 更多的是评论而不是答案
【解决方案2】:

有三种可能会降低您的服务器速度。

  1. 您的数据库未优化。优化数据库可以显着提升性能
  2. 您的查询有问题。我们需要查看您正在运行什么查询来获取 200 行。
  3. 您正在为循环中的每一行运行单独的查询。

不过,我的建议是基于您的查询,例如。

从表中选择字段 WHERE 条件 = 所需条件 LIMIT 200

此外,如果该查询运行缓慢,请解释一下它使用什么索引

EXPLAIN SELECT fields FROM table WHERE 条件 = 所需条件 LIMIT 200

因为获得 200 行应该需要几毫秒

【讨论】:

    【解决方案3】:

    您可以在表中存储的记录数,您可以获取的记录数。

    for unsigned int largest value is 4,294,967,295
    for unsigned big int largest value is 18,446,744,073,709,551,615
    

    为了快速访问记录,您需要在查询中定义 LIMIT。

    【讨论】:

      【解决方案4】:

      您应该获取显示所需的记录,不多不少。不要为(简单)计算获取记录,因为这可以在查询中完成。

      我会说显示 50 ~ 100 条记录是用户大脑可以扫描的最大值,获取记录中的所有信息。

      我是个例外,当看到超过 15 条记录时,我的大脑会倾斜 :)

      【讨论】:

        猜你喜欢
        • 2011-03-16
        • 2011-04-22
        • 2011-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多