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

Může být vnořený SP MySql úzkým hrdlem?

Ano, je to možné. Nemáme měření toho, jak dlouho to trvá, ale dá se očekávat, že dočasná tabulka způsobí určitou režii, když ji vytváříte, zapisujete do ní data, dotazujete se na ně a pak ji zahazujete. Jak často se to nazývá?

Také je obecně známo, že uložené procedury MySQL jsou značně neefektivní. Nezachovávají zkompilovanou formu postupu, jako je tomu u Oracle a dalších značek RDBMS. Jinými slovy, každá relace znovu zkompiluje každou proceduru, kterou používá při prvním volání.

Nejprve bych navrhl odstranit tabulku temp. Stačí navrhnout vnořenou proceduru k vytvoření správného SQL dotazu jako řetězce a vrátit tento řetězec. Pak vnější procedura provede dotaz je jeho výsledkem. Měli byste být schopni přeskočit vytvoření/zapuštění dočasné tabulky a vložení do dočasné tabulky.

Za druhé, pokud bych tuto aplikaci navrhoval, nevidím žádnou potřebu ani jedné uložené procedury. Doporučil bych napsat kód pro sestavení správného SQL dotazu ve vaší aplikaci a pak jen spustit tento dotaz z aplikace.



  1. Jak zakázat všechna omezení kontroly v databázi SQL Server - SQL Server / TSQL výukový program, část 87

  2. Limit velikosti datového typu JSON v PostgreSQL

  3. MySQL odstranit řádek z více tabulek

  4. Typy dat SQL VARCHAR Co dělat a co nedělat pro rychlejší databáze