Применение условных операторов в ON / WHERE
Здесь я объяснил о шагах обработки логических запросов.
Ссылка: внутри Microsoft® SQL Server ™ 2005 T-SQL Querying Издатель: Microsoft Press Pub Дата: 07 марта 2006 г. Печать ISBN-10: 0-7356-2313-9 Печать ISBN-13: 978-0-7356-2313-2 Страницы: 640
Внутри Microsoft SQL Server ™ 2005 T-SQL Querying
(8) SELECT (9) DISTINCT (11) TOP
(1) FROM
(3) JOIN
(2) ON
(4) WHERE
(5) GROUP BY
(6) WITH {CUBE | ROLLUP}
(7) HAVING
(10) ORDER BY
Первым заметным аспектом SQL, который отличается от других языков программирования, является порядок в который обрабатывается кодом. В большинстве языков программирования код обрабатывается в том порядке, в котором он написан. В SQL первое обрабатываемое предложение - это предложение FROM, в то время как первое предложение SELECT, которое появляется первым, обрабатывается почти последним.
Каждый шаг генерирует виртуальную таблицу, которая используется как вход для следующего шаг. Эти виртуальные таблицы недоступны для вызывающего (клиентского приложения или внешнего запроса). Конечной стороне возвращается только таблица, сгенерированная на последнем шаге. Если определенное условие не указано в запросе, соответствующий шаг просто пропущен.
Не беспокойтесь слишком много, если описание шаги пока не имеют большого смысла. Они приведены в качестве ссылки.
TRUE, вставляются в VT2.
TRUE, вставлены в VT4.
равно TRUE. Поэтому, (INNER JOIN) ON будет фильтровать данные (количество данных VT будет уменьшено здесь сами) перед применением предложения WHERE. Последующие условия соединения будут выполняться с отфильтрованными данными, что улучшает производительность. После этого условие WHERE будет применяться только к условиям фильтра.
(Применение условных операторов в ON / WHERE не будет иметь большого значения в нескольких случаях. Это зависит от того, сколько таблиц вы присоединились и количество строк доступно в каждой таблице соединений)
Вы можете использовать Promise.all , чтобы дождаться завершения набора обещаний.
getData()
.then(getIndividualData)
.then(function(moreResponse) {
// the result of the individual calls produced by getIndividualData();
console.log(moreResponse);
});
function getIndividualData(list) {
var tasks = list.map(function(item) {
options.url = // etc.
return request(options);
});
return Promise.all(tasks);
}