對于如上SQL,只是因為查詢字段不同,最終執行時選擇的索引就不同,那么MySQL是如何決定選擇使用哪個索引呢?
答案是MySQL會進行成本計算,對于各個場景查詢進行成本預估,最終選擇最優。
我們可以使用trace工具查看MySQL成本計算過程
- 開啟trace
set session optimizer_trace="enabled=on",end_markers_in_json=on;
- 關閉trace,默認關閉
set session optimizer_trace="enabled=on",end_markers_in_json=on;
- 查看trace
#執行sqlselect * from employees where name > 'a';
#查看trace
SELECT * FROM information_schema.OPTIMIZER_TRACE;