web-dev-qa-db-fra.com

CRÉER UN INDEX vs ALTER TABLE AJOUTER UN INDEX - MySQLism ou SQL Standard?

Je viens de rencontrer un problème étrange, selon lequel, selon la façon dont je crée un index, un nom d'index est requis.

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

Il me semble que l'appel CREATE INDEX ne devrait pas rendre le nom d'index requis. Je me demande s'il s'agit d'un MySQLism ou d'un standard SQL?

29
Mike Purcell

Je ne pense pas que le standard SQL définit comment pour créer des index pas du tout.

Une citation de cette page Wikipedia :

Standardisation

Il n'y a pas de norme sur la création d'index car la norme ISO SQL ne couvre pas les aspects physiques. Les index sont l'une des parties physiques de la conception d'une base de données, entre autres, comme le stockage (tablespace ou groupes de fichiers). Les fournisseurs de SGBDR donnent tous une syntaxe CREATE INDEX avec certaines options spécifiques qui dépendent des fonctionnalités qu'ils fournissent aux clients.

Le manuel Postgres semble le supporter ici:

Il n'y a aucune disposition pour les index dans la norme SQL.

Plus de preuves sous cette question connexe sur SO.

25
Erwin Brandstetter