Отбрасывает ли таблица MySQL автоматически также индексы таблицы?
Отбрасывает ли таблица MySQL автоматически также индексы таблицы?
Ответы
Ответ 1
Да. Он снижает индексы. Это можно проверить:
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.
Вы также можете проверить его, посмотрев в информационной схеме:
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
Ответ 2
Да, да. Без таблицы, нет никаких причин держать индексы.
Это можно подтвердить, создав таблицу MyISAM и выбрав папку tablename.MYI
в папке с данными. как только вы отбросите таблицу, этот файл исчезнет.
Ответ 3
Да. Индексы являются частью таблицы их владельцев и освобождаются вместе с данными строки при отбрасывании.
(индексы внешнего ключа в других таблицах, которые ссылаются на него, будут препятствовать удалению таблицы.)
Ответ 4
При удалении таблицы все данные, индексы и связанная информация также будут удалены.
Вы можете рассматривать это как каскадное удаление строки, когда вы удаляете строку, вся информация, которая была связана с ней, также будет удалена (внешние ключи и т.д.).
Ответ 5
http://dev.mysql.com/doc/refman/5.1/en/drop-table.html
Все данные таблицы и таблица определение удаляется, поэтому будьте осторожны с этим утверждением!