Подтвердить что ты не робот

Разница между таблицей перетаскивания и таблицей усечения?

У меня есть несколько таблиц, которые я создаю как часть моего сводного отчета. В конце концов, они мне не нужны. Кто-то упомянул об усечении их, поскольку это было бы быстрее.

4b9b3361

Ответ 1

Удаление записей из таблицы регистрирует каждое удаление и запускает триггеры удаления для удаленных записей. Truncate - более мощная команда, которая опустошает таблицу без регистрации каждой строки. SQL Server не позволяет вам обрезать таблицу с внешними ключами, ссылающимися на нее, из-за необходимости проверять внешние ключи в каждой строке.

Truncate обычно сверхбыстрый, идеально подходит для очистки данных из временной таблицы. Он сохраняет структуру таблицы для будущего использования.

Если вы действительно хотите удалить определения таблиц, а также данные, просто отбросьте таблицы.

Смотрите эту статью MSDN для получения дополнительной информации

Ответ 2

DROP TABLE удаляет таблицу.

TRUNCATE TABLE опустошает его, но оставляет свою структуру для будущих данных.

Ответ 3

DROP и TRUNC делают разные вещи:

ТАБЛИЦА TRUNCATE

Удаляет все строки из таблицы без протоколирование отдельных удалений строк. TRUNCATE TABLE похож на DELETE без предложения WHERE; однако TRUNCATE TABLE быстрее и использует меньше системных и транзакционных журналов ресурсы.

ТАБЛИЦА DROP

Удаляет одно или несколько определений таблиц и все данные, индексы, триггеры, ограничения и разрешение спецификации для этих таблиц.

Что касается скорости, разница должна быть небольшой. И вообще, если вам вообще не нужна структура таблицы, обязательно используйте DROP.

Ответ 4

Я думаю, что вы имеете в виду разницу между DELETE TABLE и TRUNCATE TABLE.

ТАБЛИЦА DROP

удалите таблицу из базы данных.

УДАЛИТЬ ТАБЛИЦУ

без условия удалите все строки. Если есть триггер и ссылки, это будет обрабатываться для каждой строки. Также будет изменен индекс, если он есть.

ТАБЛИЦА TRUNCATE

установить нумеру строк и не записывать в журнал каждую строку. То, что он намного быстрее, чем другой.

Ответ 5

Ни один из этих ответов не указывает на важное различие в этих двух операциях. Drop table - это операция, которую можно отбросить назад. Однако укоротить нельзя откат ['TRUNCATE TABLE' также можно отбросить]. Таким образом, удаление очень большой таблицы может быть очень дорогостоящим, если есть много строк, потому что все они должны быть записаны во временном пространстве, если вы решите откатить его.

Обычно, если я хочу избавиться от большой таблицы, я усекаю ее, а затем отброшу. Таким образом, данные будут записаны без записи, и таблица может быть отброшена, и это падение будет очень недорогим, поскольку данные не должны записываться.

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

Ответ 6

TRUNCATE TABLE сохраняет все ваши старые индексирования и многое другое. DROP TABLE, очевидно, избавится от таблицы и потребует, чтобы вы позже ее воссоздали.

Ответ 7

Drop полностью избавляется от таблицы, удаляя это определение. Truncate опустошает таблицу, но не избавляется от определения.

Ответ 8

Усечение таблицы опустошает таблицу. Удаление таблицы полностью удаляет. Любой из них будет быстрым, но падение его, скорее всего, будет быстрее (в зависимости от вашего ядра базы данных).

Если вам это больше не нужно, отбросьте его, чтобы он не загромождал вашу схему.

Ответ 9

УДАЛИТЬ таблицу А вместо TRUNCATE TableA? Распространенное заблуждение состоит в том, что они делают то же самое. Не так. Фактически, между ними существует много различий.

DELETE - это зарегистрированная операция для каждой строки. Это означает что удаление каждой строки регистрируется и физически удаляется.

Вы можете УДАЛИТЬ любую строку, которая не будет нарушать ограничение, оставив при этом внешний ключ или любые другие препятствия.

TRUNCATE также является зарегистрированной операцией, но по-другому. TRUNCATE регистрирует освобождение страниц данных, в которых данные существует. Выделение страниц данных означает, что ваши данные строки на самом деле существуют на страницах данных, но экстенты отмечены как пустые для повторного использования. Это то, что делает TRUNCATE более быстрой операцией для выполнения над DELETE.

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

TRUNCATE будет reset любыми столбцами идентификаторов для семени по умолчанию значение.

Ответ 10

truncate удаляет все строки, но не сама таблица, по существу эквивалентно удалению без предложения where, но обычно быстрее.

Ответ 11

В стандарте SQL таблица DROP удаляет таблицу и схему таблицы. TRUNCATE удаляет все строки.

Ответ 12

У меня есть исправление для одного из приведенных выше инструкций... "truncate нельзя откат"

Усекать можно откат. Есть некоторые случаи, когда вы не можете делать таблицу усечения или удаления, например, когда у вас есть ссылка на внешний ключ. Для такой задачи, как ежемесячная отчетность, я бы, скорее всего, просто отбросил таблицу, когда мне это больше не понадобилось. Если бы я чаще делал эту сводку, я бы, вероятно, сохранил таблицу и использовал truncate.

Надеюсь, это поможет, вот еще информация, которую вы должны найти полезной...

Более подробную информацию см. в следующей статье: http://sqlblog.com/blogs/denis_gobo/archive/2007/06/13/1458.aspx

Кроме того, для получения дополнительной информации об удалении vs. truncate см. эту статью: http://www.sql-server-performance.com/faq/delete_truncate_difference_p1.aspx

Спасибо! Джефф

Ответ 13

TRUNCATE TABLE функционально идентичный инструкции DELETE без Предложение WHERE: оба удаляют все строки в стол. Но TRUNCATE TABLE - быстрее и использует меньше систем и ресурсов журнала транзакций, чем DELETE.

Оператор DELETE удаляет строки один и записывает запись в журнал транзакций для каждой удаленной строки. TRUNCATE TABLE удаляет данные по освобождение страниц данных, используемых для хранить данные таблицы, и только вычитания страниц записываются в журнал транзакций.

TRUNCATE TABLE удаляет все строки из таблицы, но структура таблицы и ее столбцы, ограничения, индексы и т.д. по-прежнему. Счетчик, используемый идентификатор для новых строк равен resetсемя для столбца. Если ты хочешь сохранить счетчик идентичности, использовать УДАЛИТЬ вместо этого. Если вы хотите удалить таблицы и ее данных, используйте DROP TABLE.

Вы не можете использовать TRUNCATE TABLE на таблица, на которую ссылается ИНОСТРАННЫЙ КЛЮЧ ограничение; вместо этого используйте DELETE без предложения WHERE. Поскольку TRUNCATE TABLE не регистрируется, он не может активировать триггер.

TRUNCATE TABLE не может использоваться таблицы, участвующие в индексированных вид.

От http://msdn.microsoft.com/en-us/library/aa260621(SQL.80).aspx

Ответ 14

Ответы здесь совпадают с вопросом, но я собираюсь ответить на вопрос, который вы не спрашивали. "Должен ли я использовать усечение или удаление?" Если вы удаляете все строки из таблицы, вы, как правило, хотите усечь, так как это намного быстрее. Почему это происходит намного быстрее? По крайней мере, в случае Oracle, он сбрасывает отметку

Ответ 15

DELETE VS TRUNCATE

  • Оператор DELETE удаляет строки по одному и записывает запись в транзакции log для каждой удаленной строки. TRUNCATE TABLE удаляет данные, освобождая данные страниц, используемых для хранения данных таблицы, и записывает только освобождение страниц в журнал транзакций
  • Мы можем использовать предложение WHERE в DELETE, но в TRUNCATE вы не можете его использовать
  • Когда оператор DELETE выполняется с помощью блокировки строк, каждая строка в таблице заблокирована для удаления. TRUNCATE TABLE всегда блокирует таблицу и страницу, но не каждую строку
  • После выполнения инструкции DELETE таблица может содержать пустые страницы. Если операция удаления не использует блокировку таблицы, таблица (куча) будет содержать много пустых страницы. Для индексов операция удаления может оставлять пустые страницы позади, хотя эти страницы будут быстро освобождены процессом очистки фона.
  • TRUNCATE TABLE удаляет все строки из таблицы, но структура таблицы и ее столбцы, ограничения, индексы и т.д. остаются Оператор
  • DELETE не содержит RESEED столбец идентификации, а TRUNCATE statement RESEEDS IDENTITY column
  • Вы не можете использовать TRUNCATE TABLE для таблиц, которые:
    • Указывается ограничение FOREIGN KEY. (Вы можете обрезать таблицу, которая имеет внешний ключ, который ссылается сам.)
    • Участвуйте в индексированном представлении.
    • Публикуются с использованием репликации транзакций или репликации слияния
  • TRUNCATE TABLE не может активировать триггер, потому что операция не регистрирует отдельные удаление строк

Ответ 16

Таблица DROP

DROP TABLE [table_name];

Команда DROP используется для удаления таблицы из базы данных. Это команда DDL. Все строки, индексы и привилегии таблицы также будут удалены. Операция DROP не может быть отброшена.

Таблица DELETE

DELETE FROM [table_name]
WHERE [condition];

DELETE FROM [table_name];

Команда DELETE представляет собой команду DML. Его можно использовать для удаления всех строк или некоторых строк из таблицы на основе условия, указанного в предложении WHERE. Он выполняется с использованием блокировки строк, каждая строка в таблице блокируется для удаления. Он поддерживает журнал транзакций, поэтому он медленнее TRUNCATE. Операции DELETE можно отбросить назад.

Таблица TRUNCATE

TRUNCATE TABLE [table_name];

Команда TRUNCATE удаляет все строки из таблицы. Он не будет регистрировать удаление каждой строки, вместо этого он регистрирует освобождение страниц данных таблицы, что делает его быстрее, чем DELETE. Он выполняется с использованием блокировки таблицы, и вся таблица заблокирована для удаления всех записей. Это команда DDL. Операции TRUNCATE не могут быть отброшены назад.

Ответ 17

Удалить

Команда DELETE используется для удаления строк из таблицы. Предложение WHERE может использоваться только для удаления некоторых строк. Если условие WHERE не указано, все строки будут удалены. После выполнения операции DELETE вам необходимо COMMIT или ROLLBACK транзакцию, чтобы сделать изменение постоянным или отменить его.

TRUNCATE

TRUNCATE удаляет все строки из таблицы. Операцию нельзя откат... Таким образом, TRUCATE работает быстрее и не использует столько места для отмены, как DELETE.

От: http://www.orafaq.com/faq/difference_between_truncate_delete_and_drop_commands