@Shakirchinskiy

Почему функция перегружает всю оперативную память сервера?

Есть код:
async function checkQuery(object) {
  i = 0;
  while (i < urls[1].length) {
    sql = 'SELECT id FROM cases WHERE case_number="' + urls[2][i] + '"';
    await connection.execute(sql, function(err, results, fields, rows) {
      //console.log('... . Ошибка: ' + err + ', Данные: ' + results[0].objid + ', мета-данные полей: ' + fields + '.');
      if(results[0] === undefined) {
        console.log('Совпадение не найдено');
        i++;
      } else {
        console.log('Такое дело есть!');
        urls[0].splice(i, 1);
        urls[1].splice(i, 1);
        urls[2].splice(i, 1);
      }
    });  
  }
  console.log(urls[2].length);
}

При ее выполнении грузится вся память сервера и в консоли выдает 'killed'
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 1
@marioKun
Вынесите sql запрос из цикла
Попробуйте сначала получить все urls[2][i] и записать их в один массив (array1), чтобы был единый список/
Затем попробуйте выполнить запрос вида : SELECT id FROM cases WHERE case_number in ( array1.join(',') )
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы