Вилка и присоединение к обещаниям JS [дублировать]

Применение условных операторов в 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, которое появляется первым, обрабатывается почти последним.

Каждый шаг генерирует виртуальную таблицу, которая используется как вход для следующего шаг. Эти виртуальные таблицы недоступны для вызывающего (клиентского приложения или внешнего запроса). Конечной стороне возвращается только таблица, сгенерированная на последнем шаге. Если определенное условие не указано в запросе, соответствующий шаг просто пропущен.

Краткое описание фаз обработки логических запросов

Не беспокойтесь слишком много, если описание шаги пока не имеют большого смысла. Они приведены в качестве ссылки.

  1. FROM: Декартово произведение (кросс-соединение) выполняется между двумя первыми двумя таблицами в предложении FROM и в качестве результат, создается виртуальная таблица VT1.
  2. ВКЛ: фильтр ВКЛ применяется к VT1. Только строки, для которых TRUE, вставляются в VT2.
  3. OUTER (join): Если задан OUTER JOIN (в отличие от CROSS JOIN или INNER JOIN), строки из сохраненного таблица или таблицы, для которых совпадение не было найдено, добавляются к строкам из VT2 в качестве внешних строк, генерируя VT3. Если в предложении FROM указано более двух таблиц, шаги с 1 по 3 применяются повторно между результатом последнего соединения и следующей таблицей в предложении FROM до тех пор, пока все таблицы не будут обработаны.
  4. ГДЕ: ГДЕ фильтр применяется к VT3. Только строки, для которых значение TRUE, вставлены в VT4.
  5. GROUP BY: Строки из VT4 расположены в группах на основе списка столбцов, указанного в предложении GROUP BY. VT5 генерируется.
  6. CUBE | ROLLUP: Супергруппы (группы групп) добавляются к строкам из VT5, генерируя VT6.
  7. HAVING: Фильтр HAVING применяется к VT6. В VT7 вставляются только те группы, для которых значение равно TRUE.
  8. SELECT: обрабатывается список SELECT, генерирующий VT8.
  9. DISTINCT: Дублирующие строки удаляются из VT8. VT9 генерируется.
  10. ORDER BY: строки из VT9 сортируются в соответствии с списком столбцов, указанным в предложении ORDER BY. Создается курсор (VC10).
  11. TOP: указанное число или процент строк выбирается с начала VC10. Таблица VT11 генерируется и возвращается вызывающему абоненту.

Поэтому, (INNER JOIN) ON будет фильтровать данные (количество данных VT будет уменьшено здесь сами) перед применением предложения WHERE. Последующие условия соединения будут выполняться с отфильтрованными данными, что улучшает производительность. После этого условие WHERE будет применяться только к условиям фильтра.

(Применение условных операторов в ON / WHERE не будет иметь большого значения в нескольких случаях. Это зависит от того, сколько таблиц вы присоединились и количество строк доступно в каждой таблице соединений)

2
задан Tamas 5 August 2015 в 17:14
поделиться

1 ответ

Вы можете использовать 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);
}
3
ответ дан Miroslav Bajtoš 5 September 2018 в 09:41
поделиться
Другие вопросы по тегам:

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