在单个查询中可选择的安全行数

时间:2013-11-28 20:09:18

标签: php mysql sql performance scalability

这实际上并不是一个编程问题。我只是想知道从数据库的单个查询中选择的安全行数是多少。

目前,在我们(公司的)应用程序中,其编码选择300行,然后将其拆分为页面。它在服务器上很好地扩展(速度和性能),然而,数据库的添加数量确实快速增长;实际上每天。

因此,在我们每周提交超过5,000个客户反馈的情况下,我想知道我可以将select query增加到的安全限制。也不会影响非IT员工的速度/性能..

感谢。

2 个答案:

答案 0 :(得分:1)

这个问题没有简单的答案,可以安全获取的行数在查询优化方式,表优化以及计算机/服务器每次都有多少内存/ CPU之间有所不同。 / p>

如果你的表被正确编入索引(如果你不知道它的含义那么你应该阅读它以确保你不会杀死你的查询)那么一般来说所选的行数无关紧要

另外,请确保在选择行时没有执行SELECT *,SQL服务器会花费大量时间来解决此问题,而是正确命名所需的列。

基本答案是:如果你确实需要所有的行,那么没有安全的行数,你可以全部获取它们,只需确保你已经优化了SELECT查询和所提到的表结构。如果可以限制行,则执行此操作。差异不应该超过0.5 - 几秒钟,如果系统确实那么大,那么它只是你必须要忍受的东西。通常,您只能显示一小部分行,但允许用户要求更多,甚至更好,允许他们通过允许他确定获取的行数来确定他们愿意等待多长时间(如果你想要达到的目的允许)。

你所谈论的行数虽然不算太大,但糟糕的设计可能会让它成为一笔大交易。

答案 1 :(得分:1)

您对安全的定义应考虑以下因素: -

  • <强>性能 正如其他人指出的那样,这可能会有所不同,5000并不是一个非常大的数字。您将需要对处理进行计时并确定可接受的内容。

    - 处理数据的资源 PHP容易受到内存耗尽错误的影响,因为通常会为PHP脚本设置内存限制。再次,这会有所不同。如果你循环并“忽略”大量的行,你可能会离开;如果要存储数据供以后使用,则可能会遇到内存问题。同样,从100万行中获取两个数字列将得到100万行10个字符串字段的不同结果。

    - 用户互动 如果您的用户愿意坐下来观看正在处理的一百万行,那么请准确地说明。例如,我编写了一个处理大约300 000行的迁移脚本,客户端可以运行脚本。但是,在操作页面上,我一次分页30行,因为大于此的任何内容都变得太不方便了