Mysql

mysqldump:如何包含索引類型?

  • September 10, 2019

當我轉儲數據庫的架構時

mysqldump --no-data my_db > schema.sql

我得到這樣的線條

KEY `index_tbl_on_col` (`col`)

但我想要這樣的線條

KEY `index_tbl_on_col` (`col`) USING BTREE

事實上,有問題的索引確實有Index_type = 'BTREE'.

show index from tbl;
| Table | Key_name      | Index_type |
+-------+---------------+------------+
| tbl   | ix_tbl_on_col | BTREE      | 

我嘗試了多種mysqldump選擇,包括--skip-opt --create-options一起使用。

我正在使用homebrewmysqldump的 5.6.26 。

mysqldump --version
mysqldump  Ver 10.13 Distrib 5.6.26, for osx10.10 (x86_64)

您不必擔心將 嵌入USING BTREE到索引中。為什麼 ?

MyISAM 和 InnoDB 的預設索引類型是 BTREE。您不能強加任何其他類型。

MEMORY 儲存引擎的預設索引類型是 HASH。您可以強加 BTREE 索引類型。

我在 4 年前寫了一篇關於 MyISAM 和 InnoDB 不允許使用 HASH 的文章:為什麼 MySQL 在 MyISAM 或 InnoDB 上沒有雜湊索引?

鑑於此,沒有必要明確附加USING BTREE.

您可以查看CREATE INDEX文件以驗證每個儲存引擎的預設索引類型。

更新 2015-09-24 16:23 EDT

嘿,賈里德,我給你一個驚喜。我去Google搜尋,有一種方法可以吐出來USING BTREE。選項是–compatible=mysql40。我在 StackOverflow 中看到了:MySQL error USING BTREE

有趣的是,有一個關於此的錯誤報告。你知道是誰送出的嗎?一個叫傑瑞德的人。

引用自:https://dba.stackexchange.com/questions/116058