web-dev-qa-db-ja.com

CREATE INDEXとALTER TABLE ADD INDEX-MySQLism、またはSQL標準?

奇妙な問題に遭遇しました。インデックスの作成方法によっては、インデックス名が必要になります。

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の呼び出しでは、インデックス名を必須にするべきではないようです。これがMySQLismなのか、SQL標準なのか疑問に思いますか?

29
Mike Purcell

SQL標準がhowを定義してインデックスを作成するとは思わないまったく

このWikipediaページ からの引用:

標準化

ISO SQL標準は物理的な側面をカバーしていないため、インデックスの作成に関する標準はありません。インデックスは、ストレージ(テーブルスペースまたはファイルグループ)などのデータベース概念の物理的な部分の1つです。 RDBMSベンダーはすべて、顧客に提供する機能に依存するいくつかの特定のオプションを備えたCREATE INDEX構文を提供しています。

Postgresのマニュアルではこれをサポートしているようです:

SQL標準にはインデックスの規定はありません。

SOに関するこの関連質問の下でより多くの証拠

25