2010-05-18 4 views

Répondre

15

Oui. Il laisse tomber les index. Cela peut être vérifié:

 
CREATE TABLE table1 (foo INT); 
CREATE INDEX ix_table1_foo ON table1 (foo); 
CREATE INDEX ix_table1_foo ON table1 (foo); -- fails: index already exists. 
DROP TABLE table1; 
CREATE TABLE table1 (foo INT); 
CREATE INDEX ix_table1_foo ON table1 (foo); -- succeeds: index does not exist. 

Vous pouvez également vérifier en regardant dans le information schema:

 
CREATE TABLE table1 (foo INT); 
CREATE INDEX ix_table1_foo ON table1 (foo); 

SELECT COUNT(*) 
FROM information_schema.STATISTICS 
WHERE INDEX_NAME = 'ix_table1_foo'; -- returns 1 

DROP TABLE table1; 

SELECT COUNT(*) 
FROM information_schema.STATISTICS 
WHERE INDEX_NAME = 'ix_table1_foo'; -- returns 0 
1

Oui, c'est le cas. Sans table, il n'y a pas de raison de garder les index.

Vous pouvez le confirmer en créant une table MyISAM et en recherchant dans le dossier de données tablename.MYI. Une fois que vous déposez la table, ce fichier sera parti.

1

Oui. Les index font partie de leur table propriétaire et sont libérés avec les données de la ligne lorsqu'ils sont supprimés.

(indices étrangers-clés sur d'autres tableaux qui s'y réfèrent empêchera la table en cours de suppression.)

1

Quand une table est abandonné toutes les données, les index et les informations liées seront supprimés aswell. Vous pouvez regarder cela comme une suppression en cascade d'une ligne, lorsque vous supprimez une ligne toutes les informations qui y étaient liées seront également supprimées (clés étrangères, etc.)

Questions connexes