Mic*_*sen 3 mysql optimization order-by where
我有这个查询:
SELECT my_code
FROM ranges
WHERE 123456789 BETWEEN first_number AND last_number
ORDER BY type_of_code ASC LIMIT 1 ;
Run Code Online (Sandbox Code Playgroud)
我的问题是,它会在ORDER BY
从WHERE
子句中选择行之后运行吗?
我KEY
在first_number
和last_number
。我的桌子大约有 500 万行。我不想ORDER BY
先。
评估查询的逻辑顺序是:
所以从逻辑的角度来看,是的,WHERE
应该在 order by 之前进行评估。
但是,只要保留查询结果,DBMS:s(在本例中为 MySQL)就可以以任何顺序评估查询。因此,在未来的版本中,它可能会以另一个评估顺序评估查询,这可能会导致意外的性能影响。
现在,由于ORDER BY
基本上将查询转换为游标,我认为假设该WHERE
子句将在ORDER BY
(至少只要表是基于行的,对于基于列的表,情况可能会有所不同)之前进行评估是非常安全的)。
归档时间: |
|
查看次数: |
3593 次 |
最近记录: |