В этом руководстве вы узнаете, как использовать оператор SQL Server DROP INDEX для удаления существующих индексов.
Обзор оператора DROP INDEX SQL Server
Оператор DROP INDEX удаляет один или несколько индексов из текущей базы данных. Вот синтаксис оператора DROP INDEX:
DROP INDEX [IF EXISTS] index_name ON table_name;
В этом синтаксисе:
- Сначала укажите имя индекса, который вы хотите удалить, после предложения DROP INDEX.
- Во-вторых, укажите имя таблицы, к которой принадлежит индекс.
Удаление несуществующего индекса приведет к ошибке. Однако вы можете использовать опцию IF EXISTS, чтобы условно удалить индекс и избежать ошибки.
Обратите внимание, что опция IF EXISTS доступна с версии SQL Server 2016(13.x).
Оператор DROP INDEX не удаляет индексы, созданные ограничениями PRIMARY KEY или UNIQUE. Чтобы удалить индексы, связанные с этими ограничениями, используйте оператор ALTER TABLE DROP CONSTRAINT.
Чтобы удалить несколько индексов из одной или нескольких таблиц одновременно, укажите список имен индексов, разделенных запятыми, с соответствующими именами таблиц после предложения DROP INDEX, как показано в следующем запросе:
DROP INDEX [IF EXISTS] index_name1 ON table_name1, index_name2 ON table_name2, ...;
Примеры операторов SQL Server DROP INDEX
Для демонстрации мы будем использовать таблицу sales.customers из образца базы данных.
На следующем рисунке показаны индексы таблицы sales.customers:
A) Использование SQL Server DROP INDEX для удаления одного индекса.
Этот оператор использует оператор DROP INDEX для удаления индекса ix_cust_email из таблицы sales.customers:
DROP INDEX IF EXISTS ix_cust_email ON sales.customers;
Если вы проверите индексы таблицы sales.customers, то увидите, что индекс ix_cust_email был удален.
B)Пример использования SQL Server DROP INDEX для удаления нескольких индексов
В следующем примере оператор DROP INDEX используется для удаления индексов ix_cust_city, ix_cust_fullname из таблицы sales.customers:
DROP INDEX ix_cust_city ON sales.customers, ix_cust_fullname ON sales.customers;
Таблица sales.customers теперь не имеет некластеризованного индекса:
В этом руководстве вы узнали, как использовать оператор SQL Server DROP INDEX для удаления одного или нескольких индексов из таблиц.