小编ben*_*ier的帖子

如何改进此查询?

大约一年前,我引入了一个查询,该查询返回一种“客户也已购买”数据集。当时它运行得相当快,但最近变得非常慢,有时需要 5 秒或更长时间。

SELECT p.*, COUNT(*) AS total
FROM orders_products AS op
JOIN products AS p ON p.products_id = op.products_id
JOIN (
  SELECT orders_id
  FROM orders_products
  WHERE products_id = 100
) AS opf ON opf.orders_id = op.orders_id
WHERE op.products_id <> 100
GROUP BY products_id
ORDER BY total DESC
LIMIT 5;
Run Code Online (Sandbox Code Playgroud)

输出explain extended

+------+-------------+-----------------+--------+-----------------------+-------------+---------+------------------------------------+------+----------+---------------------------------+
| id   | select_type | table           | type   | possible_keys         | key         | key_len | ref                                | rows | filtered | Extra                           |
+------+-------------+-----------------+--------+-----------------------+-------------+---------+------------------------------------+------+----------+---------------------------------+
| …
Run Code Online (Sandbox Code Playgroud)

mysql mariadb performance query-performance

3
推荐指数
1
解决办法
163
查看次数

标签 统计

mariadb ×1

mysql ×1

performance ×1

query-performance ×1