Clear table sql: SQL — TRUNCATE TABLE Command
Содержание
sql — удалить все из таблицы
спросил
Изменено
1 год, 11 месяцев назад
Просмотрено
372 тысячи раз
что быстрее?
УДАЛИТЬ ИЗ имя_таблицы;
или
УДАЛИТЬ ИЗ имя_таблицы, где 1=1;
почему?
работает ли усеченная таблица
в доступе?
- sql
- mysql
- ms-access
- оптимизация
- производительность
5
Вы можете использовать приведенный ниже запрос, чтобы удалить все строки из таблицы, также вы должны помнить, что он также сбросит идентификатор.
TRUNCATE TABLE имя_таблицы
4
Это должно быть быстрее:
DELETE * FROM имя_таблицы;
, потому что РСУБД не нужно искать , где
— это что.
Вы должны быть в порядке с truncate
хотя:
truncate table table_name
3
Это удаляет таблицу имя_таблицы
.
Замените на имя таблицы, которую необходимо удалить.
УДАЛИТЬ ИЗ имя_таблицы;
1
Существует сообщение об ошибке MySQL от 2004 года, которое все еще имеет некоторую достоверность.
Кажется, в 4.x это было быстрее всего:
DROP имя_таблицы СОЗДАТЬ ТАБЛИЦУ имя_таблицы
TRUNCATE имя_таблицы
было тогда DELETE FROM
внутренним, что не обеспечивало прироста производительности.
Кажется, это изменилось, но только в 5.0.3 и младше. Из отчета об ошибке:
[11 янв. 2005 16:10] Марко Мякеля
Теперь я реализовал быструю TRUNCATE TABLE, которая, надеюсь, будет включена в MySQL 5.0.3.
0
TRUNCATE TABLE имя_таблицы
Это DDL (язык определения данных), вы можете удалить все данные и очистить личность.
Если вы хотите использовать это, вам нужны привилегии DDL в таблице.
Пример операторов DDL: CREATE, ALTER, DROP, TRUNCATE и т. д.
DELETE FROM table_name / DELETE FROM table_name WHERE 1=1 (то же самое)
Это DML (язык манипулирования данными), вы можете удалить все данные.
Пример операторов DML: SELECT, UPDATE и т. д.
Это важно знать, потому что, если приложение работает на сервере, при запуске DML проблем не возникнет. Но иногда при использовании DDL нам придется перезапустить службу приложения. У меня был такой опыт в postgresql.
С уважением.
Вы также можете использовать усечение.
обрезать таблицу имя_таблицы;
1
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Сервер
sql — Какой самый быстрый способ очистить таблицу SQL?
Задавать вопрос
спросил
Изменено
7 лет, 10 месяцев назад
Просмотрено
50 тысяч раз
У меня есть таблица примерно из 300 000 строк и 30 столбцов. Как я могу быстро очистить его? Если я выполняю запрос DROP FROM MyTable
, его выполнение занимает много времени. Я пытаюсь использовать следующую хранимую процедуру, чтобы в основном сделать копию таблицы без данных, удалить исходную таблицу и переименовать новую таблицу как оригинал:
ИСПОЛЬЗОВАТЬ [моя база данных] ИДТИ УСТАНОВИТЬ ANSI_NULLS_ON ИДТИ УСТАНОВИТЕ QUOTED_IDENTIFIER НА ИДТИ ИЗМЕНИТЬ ПРОЦЕДУРУ [dbo].[ClearTheTable] КАК НАЧИНАТЬ УСТАНОВИТЬ БЕЗ СЧЕТА; SELECT * INTO tempMyTable FROM MyTable WHERE 1 = 0; УДАЛИТЬ СТОЛ MyTable EXEC sp_rename tempMyTable, MyTable; КОНЕЦ
Это заняло почти 7 минут. Есть ли более быстрый способ сделать это? Мне не нужно ведение журнала, откат или что-то в этом роде.
Если это имеет значение, я вызываю хранимую процедуру из приложения C#. Я думаю, я мог бы написать код для воссоздания таблицы с нуля после выполнения DROP TABLE
, но я не хотел перекомпилировать приложение при каждом добавлении или изменении столбца.
Спасибо!
EDIT
Вот моя обновленная хранимая процедура:
USE [myDatabase] ИДТИ УСТАНОВИТЬ ANSI_NULLS_ON ИДТИ УСТАНОВИТЕ QUOTED_IDENTIFIER НА ИДТИ ИЗМЕНИТЬ ПРОЦЕДУРУ [dbo].[ClearTheTable] КАК НАЧИНАТЬ УСТАНОВИТЬ БЕЗ СЧЕТА; ИЗМЕНИТЬ БАЗУ ДАННЫХ myDatabase УСТАНОВИТЬ RESTRICTED_USER С НЕМЕДЛЕННЫМ ОТКАТОМ ОБРЕЗАТЬ ТАБЛИЦУ MyTable ИЗМЕНИТЬ БАЗУ ДАННЫХ myDatabase УСТАНОВИТЬ МНОГОПОЛЬЗОВАТЕЛЬСКИЙ КОНЕЦ
- sql-сервер
- хранимые процедуры
3
Лучший способ очистить таблицу — использовать TRUNCATE.
Поскольку вы создаете и удаляете больные, предположим, что у вас нет ограничений.
TRUNCATE TABLE <целевая таблица>
Некоторые преимущества:
- Используется меньше места в журнале транзакций.
Оператор DELETE удаляет строки по одной и записывает запись
в журнале транзакций для каждой удаленной строки. TRUNCATE TABLE удаляет
данные путем освобождения страниц данных, используемых для хранения данных таблицы
и записывает в журнал транзакций только освобождение страниц.
- Обычно используется меньше замков.
Когда инструкция DELETE выполняется с блокировкой строки, каждая строка в
таблица заблокирована для удаления. TRUNCATE TABLE всегда блокирует
таблицу (включая блокировку схемы (SCH-M)) и страницу, но не каждую строку.
- В таблице не осталось страниц без исключения.
После выполнения оператора DELETE таблица может содержать
пустые страницы. Например, пустые страницы в куче не могут быть освобождены.
по крайней мере без эксклюзивной (LCK_M_X) блокировки таблицы. Если удалить
операция не использует блокировку таблицы, таблица (куча) будет содержать
много пустых страниц. Для индексов операция удаления может оставить пустым
страницы позади, хотя эти страницы будут быстро освобождены
процесс очистки фона.