Всяка препоръка зависи отчасти от това къде се намира скриптът, изпълняващ заявките. Ако скриптът, изпълняващ заявките, е на същия сървър като MySQL екземпляра, тогава няма да видите чак толкова голяма разлика, но все пак ще има малки режийни разходи при изпълнение на 200 000 заявки в сравнение с 1 съхранена процедура.
Моят съвет така или иначе би бил да го направите като съхранена процедура. Може би ще ви трябват няколко процедури.
- Процедура, която комбинира 10-те оператора, които правите на операция, в 1 извикване
- Процедура, която може да преглежда таблица с аргументи, използвайки
CURSOR
за подаване в процедура 1
Вашият процес би бил
- Попълнете таблица с аргументи, които ще бъдат въведени в процедура 1 от процедура 2
- Изпълнете процедура 2
Това би довело до предимства на производителността, тъй като няма нужда да се свързвате към MySQL сървъра 20000*10 пъти. Въпреки че режийните разходи на заявка може да са малки, милисекунди се сумират. Дори ако спестяването е 0,1 ms на заявка, това пак са спестени 20 секунди.
Друга възможност може да бъде да модифицирате заявките си за изпълнение на всички 20k операции с данни наведнъж (ако е жизнеспособно), като коригирате вашите 10 заявки за изтегляне на данни от таблицата на базата данни, спомената по-горе. Ключът към всичко това е аргументите да се заредят в едно пакетно вмъкване и след това да се използват изрази на сървъра на MySQL в рамките на процедура, за да се обработват без по-нататъшни кръгови пътувания.