/ / Zapytania uruchamiane na MySql przez sqlalchemy są znacznie wolniejsze niż na konsoli DB - python, mysql, sql, sqlalchemy

Zapytania uruchamiane z MySql przez sqlalchemy są znacznie wolniejsze niż na konsoli DB - python, mysql, sql, sqlalchemy

Mam ogromną ilość kodu SQL, którym jestemdziała na naszej bazie danych. Aby uczynić go czytelnym, skonstruowałem go jako ogromną liczbę tabel tymczasowych, które są tworzone przy każdym uruchomieniu zapytania.

Podczas testowania tych zapytań uruchamiam je w Sequel Pro przeciwko DB i chociaż nie jest szybki, uruchomienie zajmuje około minuty.

Następnie biorę te same zapytania (z których większośćpo prostu powiedz CREATE TEMPORARY TABLE x (INDEX (blah)) AS (SELECT somecrazystuff); ) i uruchom je w skrypcie Pythona za pomocą sqlalchemy, a zajmują one około 15-20 minut.

Nie mam pojęcia, dlaczego tak się dzieje, ale to sprawia, że ​​testowanie przy użyciu skryptu Pythona jest niewygodne, więc w końcu robię większość pracy w Sequel Pro i zapisuję ją później.

Jakieś pomysły?

Odpowiedzi:

0 dla odpowiedzi № 1

Pierwszy pomysł: wyciąć sqlalchemy z obrazu i spróbować uruchomić zapytanie za pomocą mysql-python. SQLAlchemy jest głównie przydatne dla konstruowanie Instrukcje SQL, które następnie opróżnia przez mysql-python; ponieważ konstruujesz je ręcznie, pozbądź się możliwego źródła kosztów ogólnych.

Drugim jest sprawdzenie, co robi serwer MySQL. W zależności od używanego silnika możesz zrzucić wszystkie zapytania do plików dziennika (zobacz http://www.howtogeek.com/howto/database/monitor-all-sql-queries-in-mysql/) lub jeśli używasz tabel InnoDB, SHOW ENGINE INNODB STATUS. Chcesz się upewnić, że zapytania są identyczne, gdy trafią na serwer pochodzący z SQLAlchemy i Sequel Pro.