SQL和PHP之间的程序时差

时间:2013-04-23 18:32:18

标签: php sql performance

有人能说出SQL相对于PHP的速度差异的平均百分比是多少。 “速度差”是指在操纵数据的过程中。

我必须管理一个拥有庞大数据库的网站,这是我第一次处理这样庞大的数据库。 如果可以比较的话,我对PHP的了解要比我的SQL好十倍。出于这个原因,我总是操纵PHP脚本中的数据。

例如,我决定使用一个类来存储表格“picture”中的图片数据。 使用PDO和fetchMode FETCH_CLASS,我可以从构造函数中处理获取的数据。一个字段是字符串类型中的图片大小,如“widthxheight”。在我的构造函数中,我使用split方法将两个属性存储在单独的变量中。 由于存在很多行,我想知道这种拆分是否更适合直接从SQL代码的fetch语句执行。

让我们假设我有超过10k行,这种改变会有效吗?或者我可以为此目的坚持使用PHP吗?

3 个答案:

答案 0 :(得分:2)

我认为在你的情况下,这将是一个巨大的差异:

您选择N行。您在错误的单行中更改了一个值。这将导致N次更新查询,可能有N次交易。

如果您定义一个更新查询,则可以在一个语句和一个事务中更新N行。

那会更快。

答案 1 :(得分:1)

这里没有严格的规则。 SQL中的某些操作会快得多,PHP中的某些操作会更快,速度差异会有很大差异。

您描述的场景不应该产生任何重大影响,因此您应该以任何方式执行此操作,以获得最易理解和可维护的代码。 (可能在PHP中,正如你现在所做的那样。)

然而,宽度和高度存储在DB中的方式是可怕的和错误的。如果这是您必须处理的数据库设计的特征,那么期望解决一些破坏问题。

答案 2 :(得分:0)

我怀疑是否会有足够的差异。但是要知道在sql中,这将是几个函数调用来复制拆分功能(找到它与下一个delimeter实例之间的第N个分隔符和子串),因为sql没有split函数,并且不支持多个值一栏。并且必须为每一列完成。如果值以逗号分隔,则可以使用find_in_set,但仍然可以使用多个函数调用。