MySQL Query Browser - использование переменных

DELETE * FROM table_name;

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

SELECT DbVendor_SuperFastDeleteAllFunction(tablename, BOZO_BIT) FROM dummy;

Для скорости я думаю, что она зависит от...

  • базовая база данных: Oracle, Microsoft, MySQL, PostgreSQL, другие, пользовательские...

  • таблица, это довольно, и связанные таблицы:

могут быть правила удаления. Существует ли существующая процедура для удаления всего содержания в таблице? Это может быть оптимизировано для определенного базового механизма базы данных? О каком количестве мы заботимся о повреждающихся вещах / связанные данные? Выполнение УДАЛЕНИЯ может быть 'самым безопасным' способом предположить, что другие связанные таблицы не зависят от этой таблицы. Есть ли другие таблицы и запросы, которые связаны / зависят от данных в этой таблице? Если мы не заботимся очень об этой таблице, являющейся вокруг, использование ОТБРАСЫВАНИЯ могло бы быть быстрым методом, снова в зависимости от базовой базы данных.

DROP TABLE table_name;

, Сколько строк удаляется? Есть ли другая информация, которая быстро подбирается, который оптимизирует удаление? Например, мы можем сказать, пуста ли таблица уже? Мы можем сказать, существуют ли сотни, тысячи, миллионы, миллиарды строк?

6
задан OMG Ponies 19 October 2009 в 02:32
поделиться

4 ответа

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

0
ответ дан 17 December 2019 в 18:17
поделиться

Не похоже, что то, что я хочу, действительно возможно. Я просто использую две вкладки: одну вкладку скрипта для редактирования запроса и вкладку результатов для его вызова. Это работает, но это не так просто, как MSSQL Query Analyzer.

0
ответ дан 17 December 2019 в 18:17
поделиться

Разделите запросы точками с запятой следующим образом:

SELECT  @var1 := 17, @var2 := 'somethingelse';
SELECT  @var1, @var2;

Запрос будет выделен, когда вы наведете на него курсор.

Затем просто нажмите Ctrl-Enter , чтобы выполните тот самый запрос, который вы хотите выполнить.

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

2
ответ дан 17 December 2019 в 18:17
поделиться

Обычно браузер запросов MySQL использует отдельное соединение для каждого оператора, который вы выполняете на вкладке запроса. Это включает семантику автоматической фиксации. Это означает, что если вы ВСТАВИТЕ запись в таблицу, все остальные клиенты, подключенные к тому же серверу, сразу же увидят новую запись, как только ваш оператор будет завершен.

Если вы нажмете кнопку «Начать транзакцию» , это будет иначе. Пока вы не нажимаете кнопки «Откат» или «Зафиксировать», все, что вы делаете на этой вкладке запроса, будет происходить в рамках одной транзакции.

Чтобы попробовать это, подключите двух клиентов одновременно, по крайней мере, одного являясь браузером запросов. В другом клиенте выполните SELECT COUNT (*) FROM testtable , если такая таблица существует.

Теперь в браузере запросов нажмите «Начать транзакцию» кнопка. Вставьте новую запись в тестовую таблицу. Сделайте , а не , но нажмите кнопку фиксации, а вместо этого в том же браузере запросов выполните то же самое SELECT COUNT (*) FROM testtable . Вы увидите значение, которое на единицу больше, чем в другом клиенте, потому что этот SELECT находится в той же транзакции, что и INSERT , который вы только что сделали. Повторно выполните SELECT в другом клиенте и убедитесь, что вы по-прежнему получаете то же значение, потому что вы еще не видите незафиксированный INSERT .

В браузере запросов теперь нажмите " Подтвердить »и повторно запустить SELECT в другом клиенте в третий раз. Теперь вы также увидите увеличенное количество строк.

Я не пробовал использовать переменные, но полагаю, что это тоже должно работать нормально.

Надеюсь, что это поможет!

1
ответ дан 17 December 2019 в 18:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: