PHP - SQL 优化最小/最大太慢

标签 php mysql performance optimization

我在查询时遇到一些问题,该查询查找带有某些过滤器的订单的下一个 ID - 就像它应该来自特定城市等。

目前它用于一个函数,它会根据当前顺序吐出上一个或下一个 ID。因此它可以是 min(id) 或 max(id),其中 max(id) 显然更快,因为它必须经过更少的行。

查询工作正常,但速度相当慢,因为它要遍历 123953 行才能找到 ID。有什么办法可以优化这个吗?

函数示例:

SELECT $minmax(orders.orders_id) AS new_id FROM orders LEFT JOIN orders_status ON orders.orders_status = orders_status.orders_status_id $where_join WHERE orders_status.language_id = '$languages_id' AND orders.orders_date_finished != '1900-01-01 00:00:00' AND orders.orders_id $largersmaller $ordersid $where;

实例

SELECT min(orders.orders_id)
FROM orders 
LEFT JOIN orders_status ON orders.orders_status = orders_status.orders_status_id
WHERE orders_status.language_id = '4' 
  AND orders.orders_date_finished != '1900-01-01 00:00:00' 
  AND orders.orders_id < 4868771 
LIMIT 1

最佳答案

所以结论:

SELECT orders.orders_id
FROM orders 
JOIN orders_status ON orders.orders_status = orders_status.orders_status_id
WHERE orders_status.language_id = '4' 
  AND orders.orders_date_finished != '1900-01-01 00:00:00' 
  AND orders.orders_id < 4868771 
ORDER BY orders.orders_id ASC
LIMIT 1

额外:

要获取最大值,请在 ASC 现在所在的位置使用 DESC。

看看你的问题:一定要转义 $language_id 等值。我想它们可能来自某种 html 表单? (或使用准备好的语句)

关于PHP - SQL 优化最小/最大太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46033084/

相关文章:

javascript - 根据表单提交返回信息

php - postgres select for update 查询意义

mysql查看if else问题

javascript - 评论会影响性能吗?

PHP MYSQL 数据库连接和显示数据不工作

php - 多层次ID生成

php - 检查是否超过两个小时

c++ - C++ 的效率

javascript - 设置 DOMElement 边界的最快方法是什么?

javascript - 复选框更改上的 jQuery $.post 不起作用