Удалить все строки в таблице
обычно я бы сделал delete * from XXX но на этой таблице это очень медленно, он обычно имеет около 500k до 1m строк в нем ( один является varbinary(MAX), если это mathers ).
в основном им интересно, есть ли быстрый способ emty таблицы всего контента, его на самом деле быстрее отбросить и воссоздать его, а затем удалить содержимое с помощью инструкции delete sql
причина, по которой я не хочу воссоздавать таблицу, заключается в том, что ее сильно используют и удаляют / воссоздают, я предполагаю, что уничтожит индексы и статистика, собранные sql server
Я также надеюсь, что есть способ сделать это, потому что есть "умный" способ получить количество строк через sys.sysindexes, поэтому я надеюсь, что есть равно умный способ удалить контент
5 ответов:
Truncate tableбыстрееdelete * from XXX.Deleteмедленно, потому что он работает по одной строке за раз. Есть несколько ситуаций, когда усечение не работает, о которых вы можете прочитать на MSDN.
Как говорили другие,
TRUNCATE TABLEнамного быстрее, но у него есть некоторые ограничения (взятые из здесь):вы не можете использовать усечение таблицы на таблицах, которые:
- Ссылаются на ограничение внешнего ключа. (Вы можете усечь таблицу, которая имеет внешний ключ, который ссылается на себя.)
- Участие в индексированном представлении.
- Публикуются с помощью репликации транзакций или репликации слиянием.
Для таблиц с вместо одной или нескольких из этих характеристик используйте инструкцию DELETE.самый большой недостаток заключается в том, что если таблица, которую вы пытаетесь очистить, имеет внешние ключи, указывающие на нее, то вызов усечения завершится неудачей.
можно переименовать таблицу, создать таблицу с идентичной схеме, а затем удалить исходную таблицу на досуге.
см. справочное руководство MySQL 5.1 для [
RENAME TABLE][1] и [CREATE TABLE][2 команд].RENAME TABLE tbl TO tbl_old; CREATE TABLE tbl LIKE tbl_old; DROP TABLE tbl_old; -- at your leisureэтот подход может помочь свести к минимуму время простоя приложения.
Я бы предложил использовать усечение таблицы, это быстрее и использует меньше ресурсов, чем удалить из xxx
вот связанные статья MSDN
Comments