我花了很长时间在PHP中为我的网站构建这个自定义搜索功能,它根据最终用户提供的选项和输入逐步构建MySQL查询。它在我的本地服务器上运行得很好,但是当我将它上传到生产站点时,它运行速度很慢。我对使用PHP和MySQL进行编程比较陌生,因此我对一般情况以及未来的项目感到好奇:
运行搜索查询时,最好是拥有一个复杂,精确的MySQL查询来过滤数据并返回要显示的PHP结果,或运行简单的MySQL查询并从数据库中获取大量数据并拥有PHP过滤数据然后显示结果?
答案 0 :(得分:2)
这是一种平衡行为。这是我的建议:
通常,最佳查询应该足够了。在一些极端情况下,使用PHP进行工作很有用,但数据库应该足够快,99%的情况。
答案 1 :(得分:1)
如果许多Web服务器访问数据库,那么对MySQL服务器进行大量处理可能不是一个好主意。其次,如果你使用产生大量数据的查询,这将使你的数据长时间传输到Web服务器,你将不得不在php中进行更多的处理。
另一方面,MySQL使用大量优化,以便有效地获取数据。所以一切都取决于你在做什么
答案 2 :(得分:0)
我认为你可以将它结合起来以获得最佳效果。首先,运行完全匹配或非常接近匹配的查询。基本上,如果有人搜索页面的确切名称,您只想返回(=而不是LIKE)。然后,也许他们的第一部分是正确的(LIKE'words%')。最后,构建一个更复杂的,MySQL正在进行繁重的工作。这可确保在用户提供最佳数据时获得最快的回报。
答案 3 :(得分:0)
在优化Web应用程序时,有几个变量可以发挥作用。根据您所说的内容,允许用户选择多个选项以“构建查询”会让我相信您可能正在做一些代价高昂的MySQL操作。您希望远离OR,如果您需要执行任何ORDER BY,您可以在应用程序层执行此操作,只需填充一组结果,然后对数组进行排序。
您可能还需要考虑添加位于MySQL层之上的缓存层,这样您就不必每次都访问数据库。
正如Kerrek在评论中提到的那样,您可以分析您的应用程序以查看瓶颈所在,查看XDebug(http://xdebug.org/)和KCacheGrind(http://kcachegrind.sourceforge.net/html/Home html的)
让你开始的一些想法。