Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wiele zapytań VS Stored Procedure

Wszelkie zalecenia zależą częściowo od tego, gdzie znajduje się skrypt wykonujący zapytania. Jeśli skrypt wykonujący zapytania znajduje się na tym samym serwerze, co instancja MySQL, nie zauważysz tak dużej różnicy, ale nadal będzie niewielki narzut przy wykonywaniu 200k zapytań w porównaniu z 1 procedurą składowaną.

Moja rada byłaby taka, aby zrobić to jako procedurę składowaną. Potrzebujesz może kilku procedur.

  1. Procedura, która łączy 10 stwierdzeń, które wykonujesz na operację w 1 wywołaniu
  2. Procedura, która może iterować po tabeli argumentów przy użyciu CURSOR do wprowadzenia do procedury 1

Twój proces byłby

  1. Wypełnij tabelę argumentami, które zostałyby wprowadzone do procedury 1 przez procedurę 2
  2. Wykonaj procedurę 2

Przyniosłoby to korzyści w zakresie wydajności, ponieważ nie ma potrzeby łączenia się z serwerem MySQL 20000*10 razy. Chociaż narzut na żądanie może być niewielki, sumują się milisekundy. Nawet jeśli oszczędność wynosi 0,1 ms na żądanie, to i tak oszczędza się 20 sekund.

Inną opcją może być zmodyfikowanie żądań w celu wykonania wszystkich operacji na danych 20 tys. Kluczem do tego wszystkiego jest pobranie argumentów w jednym wstawieniu wsadowym, a następnie użycie instrukcji na serwerze MySQL w ramach procedury w celu ich przetworzenia bez dalszych podróży w obie strony.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przechowywać znak Emoji w bazie danych MySQL

  2. PHP:mysql_fetch_array() oczekuje, że parametr 1 będzie zasobem, podana wartość logiczna

  3. Łączenie operacji UNION i LIMIT w zapytaniu MySQL

  4. Otrzymywanie zduplikowanych błędów wpisów z Hibernate, czy jest to wina MySQL?

  5. Jak mogę WYBRAĆ wiersze z MAX (wartość kolumny), DISTINCT by MULTIPLE kolumn w SQL?