jtag, что мешает реализовать такой алгоритм:
Получаю список данных на обработку; Собираю все айдишники пользователей в массив; Запрашиваю из бд поля id и ИНН пользователей, чей id лежит в собранном массиве; Создаю объект "insert", в который буду складывать данные для вставки в бд; В цикле гоняю полученные данные заполняя объект "insert"; Если "insert" не пустой, создаю в бд сразу несколько записей на основе данных из этого объекта. Описанный мною алгоритм требует всего 3 запроса и 1 цикл. |
Nexus,
по уму, так тут никаких циклов и требуется, собственно как и четыре запроса. |
laimas, "insert select"?
|
Спасибо. Попробую реализовать.
|
Цитата:
let x = 0;
function query(){
connection.query("SELECT * FROM person WHERE x = '"+x+"' ... ", function() {
x++;
setTimeout(query,500);
});
}
query();
|
jtag, если у вас все необходимые данные есть в бд, то можно обойтись 1 запросом к бд.
Без циклов и прочего. |
Цитата:
Я не знаю node и для меня в запросах setTimeout(), это вообще какая-то дикость. :) Но то что запросы организованы не как полагается, это видно сразу. |
laimas, я тоже ноду не знаю, но автору, вроде как нужно добавить пользователей, для которых в бд нет инн.
|
NeoN, я node.js не знаю, но не оцените ли саму идею этого кода? :)
class SomeClass{
/**
* @return Promise
*/
public getFirstOneBillionUsers(){
return new Promise(function(resolve){
var counter=0,
users=[],
request=function(){
connection.query('SELECT * FROM users WHERE id>'+$counter+' LIMIT 1',function(user){
counter++;
users.push(user);
if(counter<Math.pow(10,9))
setTimeout(request,500);
else
resolve(users);
});
};
});
}
}
По-моему гениальный способ зад-чить бд :)Примерное время выполнения метода: чуть меньше 16 лет. |
процедуру напиши
|
| Часовой пояс GMT +3, время: 18:17. |