糟糕的应用程序架构、糟糕的数据库设计和糟糕的代码总是会低效运行、缓慢且无法扩展。
如果你把它排除在外,大多数“非常高需求”的目的都可以用任何解释语言来服务 - 请记住它们在他们所做的事情上进行了优化(例如浪费内存,但即使对于高需求使用通常也很快) .
话虽如此,我们得到了真正的答案:
在数据库设计中,没有适用于所有用例的完美方法。您可能需要以一种方式构建数据库以实现最佳读取速度,以另一种方式实现最佳写入速度,再以另一种方式实现最佳灵活性(但会牺牲读取和写入速度)。一个部分可能需要高读取速度,另一个部分可能需要高写入速度,而另一个部分可能需要高灵活性。
想想你设计数据库的方式并问自己“我是否需要在一个会话中连接到数据库 300 次以收集所有数据,或者我是否可以编写一个可以一次读取所有数据的大语句”如果不是这样很容易实现 想想如果你可以编写一个 SQL 存储过程,如果你再次空出来,想想你是否可以改变结构(例如牺牲灵活性)以允许单行读取或存储过程读取。
在任何情况下,从 PHP 到 MySQL 的多对多连接发送 1 个查询意味着您要花费大量时间等待 PHP 通过网络连接到 MySQL 服务器(即使它是本地的)以及让 MySQL 处理请求和提供答案等等等等。如果您可以将要发送的所有语句批量生成到一个字符串中,那就太好了,如果不能,如果您可以将它们分组为较小的批次,那也可以。
如果以上所有内容都不可接受,或者如果您今天真的有编写 C 脚本的诀窍(无论如何都是值得称赞的意图):
您应该考虑编写一个 C MySQL 模块来定义一些 UDF - 用户定义的函数。他们可以在 MySQL 读取行级数据时访问它,并且可以处理输出聚合和所有这些爵士乐。
编写 apache 模块或 PHP 模块将以与 MySQL 模块大致相同的格式提供数据,但处理不会在 MySQL 服务器内部运行,它将从 MySQL 请求数据,处理它并请求更多数据。