Используйте addEventListener для тела и слушайте событие 'scroll', затем, когда событие запущено, проверьте свойство scrollY окна, и если оно равно 0, то вы находитесь сверху.
function yourFunction() {
console.log('you are on top');
}
window.addEventListener('scroll', () => {
if (window.scrollY == 0) yourFunction();
}, true);
Сингл удаляет, будет быстрее по нескольким причинам:
Сингл удаляет, быстрее, существует только один план создать и выполниться.
Отдельный оператор быстрее по причинам, уже указанным.
В данном примере
DELETE FROM table_name WHERE X BETWEEN 1 AND 3
будет еще быстрее, особенно если у Вас будет кластерный индекс на X.
Сингл удаляет, обычно быстрее по причинам kogus упомянутый.
Но... имейте в виду, что, если необходимо вытереть 50% 2 миллионов таблиц строки и существует большое действие против таблицы, удаляющий в маленьких пакетах или выбирающий в новую таблицу и загружающий ту таблицу могут быть лучшие подходы.
Представьте его в своем DB с Вашими индексами и Вашими данными. Я склонен согласиться с использованием отдельного оператора, тем не менее, я могу думать о нескольких быстрых экземплярах, были эти 3 оператора, будет намного быстрее. Если это действительно имеет значение, представьте его.
Существует третья опция, что я думаю, что можно хотеть рассмотреть. Я думаю, что это может быть лучше затем Ваш первый пример, но не столь хорошим как Ваша секунда.
Если Ваша поддержка БД с помощью подготовленных операторов затем Вы могли бы сделать готовить на операторе.
DELETE FROM table_name WHERE X='?'
Затем просто называя это со значением 1, 2, и 3.
Обычно мой опыт состоял в том, что Вы получаете лучшую производительность при использовании основанной на наборе операции как второй пример.
Отдельный оператор:
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)
(или безотносительно)