Mysql
 sql >> база данни >  >> RDS >> Mysql

Множество заявки срещу съхранена процедура

Всяка препоръка зависи отчасти от това къде се намира скриптът, изпълняващ заявките. Ако скриптът, изпълняващ заявките, е на същия сървър като MySQL екземпляра, тогава няма да видите чак толкова голяма разлика, но все пак ще има малки режийни разходи при изпълнение на 200 000 заявки в сравнение с 1 съхранена процедура.

Моят съвет така или иначе би бил да го направите като съхранена процедура. Може би ще ви трябват няколко процедури.

  1. Процедура, която комбинира 10-те оператора, които правите на операция, в 1 извикване
  2. Процедура, която може да преглежда таблица с аргументи, използвайки CURSOR за подаване в процедура 1

Вашият процес би бил

  1. Попълнете таблица с аргументи, които ще бъдат въведени в процедура 1 от процедура 2
  2. Изпълнете процедура 2

Това би довело до предимства на производителността, тъй като няма нужда да се свързвате към MySQL сървъра 20000*10 пъти. Въпреки че режийните разходи на заявка може да са малки, милисекунди се сумират. Дори ако спестяването е 0,1 ms на заявка, това пак са спестени 20 секунди.

Друга възможност може да бъде да модифицирате заявките си за изпълнение на всички 20k операции с данни наведнъж (ако е жизнеспособно), като коригирате вашите 10 заявки за изтегляне на данни от таблицата на базата данни, спомената по-горе. Ключът към всичко това е аргументите да се заредят в едно пакетно вмъкване и след това да се използват изрази на сървъра на MySQL в рамките на процедура, за да се обработват без по-нататъшни кръгови пътувания.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Това изготвено PDO изявление връща false, но не хвърля грешка

  2. как да напиша SQL заявка в cakephp?

  3. Как да се справя с единични кавички в SQL заявка в PHP?

  4. Какви са всички тези SQL оператори в Laravel?

  5. Как да намерите дубликати в 2 колони, а не в 1