sql >> Databáze >  >> RDS >> Mysql

Více dotazů VS uložená procedura

Jakékoli doporučení závisí částečně na tom, kde se nachází skript provádějící dotazy. Pokud je skript provádějící dotazy na stejném serveru jako instance MySQL, neuvidíte tak velký rozdíl, ale stále bude existovat malá režie při provádění 200 000 dotazů ve srovnání s 1 uloženou procedurou.

Moje rada by v každém případě byla udělat to jako uloženou proceduru. Možná byste potřebovali několik procedur.

  1. Procedura, která kombinuje 10 příkazů, které provedete na operaci, do 1 volání
  2. Procedura, která může iterovat přes tabulku argumentů pomocí CURSOR vložit do postupu 1

Váš postup by byl

  1. Naplňte tabulku argumenty, které by procedura 2 vložila do procedury 1
  2. Proveďte postup 2

To by přineslo výhody z hlediska výkonu, protože není potřeba se k serveru MySQL připojovat 20 000*10krát. Zatímco režie na požadavek může být malá, milisekundy se sčítají. I když je úspora 0,1 ms na požadavek, stále je to ušetřených 20 sekund.

Další možností může být úprava vašich požadavků na provádění všech 20 000 datových operací najednou (pokud je to možné) úpravou vašich 10 dotazů tak, aby vytahovaly data z výše uvedené databázové tabulky. Klíčem k tomu všemu je načíst argumenty v jediném dávkovém vložení a poté pomocí příkazů na serveru MySQL v rámci procedury je zpracovat bez dalších okružních jízd.




  1. Moje cesta OOW15 je dokončena

  2. Jak funguje SQLite Total()

  3. Zaseknutý dotaz na PHP

  4. Je pro cizí klíče preferován řetězec nebo int?