mysql - 如何使静态嵌套 SELECT 更快

标签 mysql

我有一个与此类似的查询

FROM products AS p, ..
LEFT JOIN ( SELECT .. ) AS popularity on popularity.products_id = p.products_id
LEFT JOIN ( SELECT .. ) AS reviews on reviews.products_id = p.products_id
WHERE..
AND..
..

来自LEFT JOIN的嵌套SELECT静态,我的意思是返回的结果不受外部值的影响。这两个 SELECT 使用数据库中的数据并计算结果。例如,当某些用户对产品进行评论时,这些查询的结果很少发生变化。

问题是这些SELECT需要花费很多时间才能完成,它们会遍历各自表的每一行。

有没有办法通过将其转换为几个较小的查询来使该查询更快?或者以某种方式缓存嵌套选择?

最佳答案

我同意如果没有更多信息就很难回答。不过,请查看这篇文章:http://www.xaprb.com/blog/2006/04/30/how-to-optimize-subqueries-and-joins-in-mysql 。我过去发现它很有帮助。

如果您查看最后一段,您将看到一种将嵌套选择的结果保存在临时表中的技术。

关于mysql - 如何使静态嵌套 SELECT 更快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3620506/

相关文章:

php - 通过 foreach 循环时插入额外的行

mysql - 如何使用 Windows 任务计划程序导入 CSV 或使用命令提示符计划任务

java - 尝试从Android应用程序将文件上传到xampp服务器时找不到文件异常

php - 使用准备好的语句在数据库中插入 datetime NOW()

php - 开关函数输出默认值而不是期望值

php - 在 php 中重置表 AUTO INCREMENT

java - 具有内存中 hsqldb 的 symmetryds

php - 登录系统中 undefined variable session

python - 从查询中获取列表列名称+数据类型

php - 对 MySQL 中最畅销的产品进行计数或求和