Отбрасывает ли таблица 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

При удалении таблицы все данные, индексы и связанная информация также будут удалены. Вы можете рассматривать это как каскадное удаление строки, когда вы удаляете строку, вся информация, которая была связана с ней, также будет удалена (внешние ключи и т.д.).