Который быстрее? Несколько Операторов удаления или единственное использование Оператора удаления “В ('x', ''y')”

Используйте addEventListener для тела и слушайте событие 'scroll', затем, когда событие запущено, проверьте свойство scrollY окна, и если оно равно 0, то вы находитесь сверху.

function yourFunction() {
  console.log('you are on top');
}

window.addEventListener('scroll', () => {
  if (window.scrollY == 0) yourFunction();
}, true);
9
задан BQ. 30 December 2008 в 21:58
поделиться

7 ответов

Сингл удаляет, будет быстрее по нескольким причинам:

  1. Только один план должен будет быть сгенерирован
  2. Только одна транзакция будет включена (при использовании их),
  3. Если Вы выполняете их из кода, то существует меньше служебное с вызовами ODBC и сетевым трафиком
  4. Любые индексы должны будут быть обновлены только однажды, не много раз.
20
ответ дан 4 December 2019 в 07:36
поделиться

Сингл удаляет, быстрее, существует только один план создать и выполниться.

3
ответ дан 4 December 2019 в 07:36
поделиться

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

В данном примере

DELETE FROM table_name WHERE X BETWEEN 1 AND 3

будет еще быстрее, особенно если у Вас будет кластерный индекс на X.

3
ответ дан 4 December 2019 в 07:36
поделиться

Сингл удаляет, обычно быстрее по причинам kogus упомянутый.

Но... имейте в виду, что, если необходимо вытереть 50% 2 миллионов таблиц строки и существует большое действие против таблицы, удаляющий в маленьких пакетах или выбирающий в новую таблицу и загружающий ту таблицу могут быть лучшие подходы.

1
ответ дан 4 December 2019 в 07:36
поделиться

Представьте его в своем DB с Вашими индексами и Вашими данными. Я склонен согласиться с использованием отдельного оператора, тем не менее, я могу думать о нескольких быстрых экземплярах, были эти 3 оператора, будет намного быстрее. Если это действительно имеет значение, представьте его.

1
ответ дан 4 December 2019 в 07:36
поделиться

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

Если Ваша поддержка БД с помощью подготовленных операторов затем Вы могли бы сделать готовить на операторе.

DELETE FROM table_name WHERE X='?'

Затем просто называя это со значением 1, 2, и 3.

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

0
ответ дан 4 December 2019 в 07:36
поделиться

Отдельный оператор:

DELETE FROM table_name WHERE X IN ('1', '2', '3')

... было бы быстрее. Я не уверен, какую базу данных Вы используете, но я рекомендовал бы изучить план выполнения Ваших запросов. При использовании MySQL можно использовать команду EXPLAIN как:

EXPLAIN DELETE FROM table_name WHERE X IN ('1', '2', '3')

Также, поскольку Вы имеете, записал в комментариях, если Вы надеетесь динамично заполнять Вас () пункт, можно использовать подзапрос как:

DELETE FROM table_name WHERE x IN (SELECT id FROM table_name WHERE Y = Z)

(или безотносительно)

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

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