官术网_书友最值得收藏!

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。

主站蜘蛛池模板: 忻州市| 河津市| 保山市| 江西省| 五原县| 连江县| 高碑店市| 铜梁县| 罗甸县| 越西县| 定远县| 建始县| 东莞市| 军事| 崇仁县| 克山县| 枝江市| 佛学| 上林县| 容城县| 疏附县| 台山市| 安图县| 石狮市| 台南市| 鄂伦春自治旗| 高邮市| 台江县| 太原市| 景泰县| 韶关市| 左贡县| 瑞丽市| 天台县| 乐昌市| 堆龙德庆县| 浦北县| 尼玛县| 梅河口市| 晋州市| 陵川县|