我正在编写一个相当简单的webapp,它从mysql数据库中的3个表中提取数据。因为我不需要大量的高级过滤,所以理论上构造然后在大型多维数组中工作更快,而不是在可能的情况下进行mysql查询。
理论上我可以从每个表中获得一个查询并使用结果构建大型数组,基本上不需要再次查询该表。这是一个很好的做法,还是在需要时查询数据更好?或者是否存在某种平衡,如果是这样,它是什么?
答案 0 :(得分:1)
PHP数组可以非常快,但它取决于这些表有多大,当数字变得庞大时MySQL会更快,因为使用正确的索引,它不必扫描所有数据,但是只需选择你需要的那些。
我不建议你尝试你的建议,MySQL有一个查询缓存,所以重复查询甚至不会打到磁盘,所以在某种程度上,你正在考虑的优化已经完成。
最后,正如克里斯所说,从不考虑不需要时的优化。
关于良好实践,一个好的做法是编写最简单(易于阅读)的代码来完成这项工作。
如果最终您决定应用优化,分析性能,您可能会对意外结果感到惊讶。
答案 1 :(得分:1)
这取决于......
尝试使用microtime功能的每个解决方案,您将获得结果。
我认为MySQL Query缓存可以是一个很好的解决方案。如果您已经过滤,则可以创建视图。
答案 2 :(得分:0)
如果您可以通过一次查询将其拉下来 - 那就去吧!在你的情况下,我会说这是一个很好的做法。您也可以考虑将数据保存在CSV或类似文件中,这样可以提供更好的性能。
答案 3 :(得分:0)
我绝对赞同克里斯的优化:LAMP堆栈是99%的网络应用程序的一个很好的解决方案,无需任何优化。如果您真的遇到性能问题,请进行优化。
还有一个想到你的php +数据库的心理模型:你没有考虑到从数据库中读取大量数据到php也需要时间。