- MySQL 8從零開始學(視頻教學版)
- 胡同夫
- 583字
- 2020-03-06 11:33:33
5.4 MySQL 8.0的新特性1——支持降序索引
在MySQL 8.0之前,MySQL在語法上已經支持降序索引,但實際上創建的仍然是升序索引。
下面通過案例來對比不同的版本中對降序索引的支持情況。
分別在MySQL 5.7版本和MySQL 8.0版本中創建數據表ts1,結果如下:

在MySQL 5.7版本中查看數據表ts1的結構,結果如下:

從結果可以看出,索引仍然是默認的升序。
在MySQL 8.0版本中查看數據表ts1的結構,結果如下:

從結果可以看出,索引已經是降序了。下面繼續測試降序索引在執行計劃中的表現。
分別在MySQL 5.7版本和MySQL 8.0版本的數據表ts1中插入8萬條隨機數據,執行語句如下:

在MySQL 5.7版本中查看數據表ts1的執行計劃,結果如下:

從結果可以看出,執行計劃中掃描數為79999,而且使用了Using filesort。
提示
Using filesort是MySQL中一種速度比較慢的外部排序,能避免是最好的結果。多數情況下,管理員可以通過優化索引來盡量避免出現Using filesort,從而提高數據庫執行速度。
在MySQL 8.0版本中查看數據表ts1的執行計劃,結果如下:

從結果可以看出,執行計劃中掃描數為5,而且沒有使用Using filesort。
注意
降序索引只對查詢中特定的排序順序有效,如果使用不當,反而查詢效率更低。例如,上述查詢排序條件改為order by a desc, b desc,MySQL 5.7的執行計劃要明顯好于MySQL 8.0。
將排序條件修改為order by a desc, b desc后,下面來對比不同版本中執行計劃的效果。
在MySQL 5.7版本中查看數據表ts1的執行計劃,結果如下:

在MySQL 8.0版本中查看數據表ts1的執行計劃,結果如下:

從結果可以看出,修改后MySQL 5.7的執行計劃要明顯好于MySQL 8.0。
- Node.js 10實戰
- 程序設計與實踐(VB.NET)
- Mastering Natural Language Processing with Python
- Python零基礎快樂學習之旅(K12實戰訓練)
- Ray分布式機器學習:利用Ray進行大模型的數據處理、訓練、推理和部署
- Learning ArcGIS Pro
- Kotlin Standard Library Cookbook
- Advanced Oracle PL/SQL Developer's Guide(Second Edition)
- Oracle實用教程
- 工業機器人離線編程
- ASP.NET求職寶典
- Julia數據科學應用
- SignalR:Real-time Application Development(Second Edition)
- 零基礎學C語言(第4版)
- 軟硬件綜合系統軟件需求建模及可靠性綜合試驗、分析、評價技術