Mysql

CREATE INDEX 與 ALTER TABLE ADD INDEX - MySQLism 還是 SQL Standard?

  • July 7, 2019

剛剛遇到一個奇怪的問題,根據我創建索引的方式,需要一個索引名稱。

http://dev.mysql.com/doc/refman/5.5/en/create-index.html

http://dev.mysql.com/doc/refman/5.5/en/alter-table.html

CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name

ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name

在我看來, CREATE INDEX 呼叫不應該要求索引名稱。我想知道這是 MySQL 主義還是 SQL 標準?

我認為 SQL 標準根本沒有定義如何創建索引。

來自此維基百科頁面的引用:

標準化

沒有關於創建索引的標準,因為 ISO SQL 標準不涵蓋物理方面。索引是數據庫概念的物理部分之一,例如儲存(表空間或文件組)。RDBMS 供應商都提供了帶有一些特定選項的 CREATE INDEX 語法,這些選項取決於他們提供給客戶的功能。

Postgres 手冊似乎在這裡支持這一點:

SQL 標準中沒有關於索引的規定。

在這個相關問題下關於 SO 的更多證據。

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