Mam procedur przechowywanych, które tworzą tabele tymczasowe. Chciałbym następnie wykonać kwerendę, która łączy się z tymi tabelami tymczasowymi.Czy istnieje sposób korzystania z tabel tempa MySQL w programie Go?
Problem polega na tym, że w przypadku projektowania bazy danych/sql Golang, jedynym sposobem zapewnienia tego samego połączenia dla kolejnych zapytań jest utworzenie transakcji.
Czy mogę prosić o kłopoty, jeśli zawinę większość moich SELECT w transakcji w celu uzyskania dostępu do tabeli tymczasowej? Rozumiem, że utracę wydajność/skalowalność, ponieważ będę utrzymywał połączenia z puli, zamiast pozwalać im na powrót między zapytaniami. Ale zastanawiam się, czy zacznę widzieć blokowanie lub inne poważne problemy związane z tą strategią.
Powodem, dla którego muszę to zrobić, jest to, że plan wykonania MySQL dla wielu moich tabel jest bardzo słaby (robię kilka sprzężeń między dużymi tabelami). Chciałbym wykonać niektóre zapytania pośrednie i przechowywać ich wyniki w tabelach tymczasowych, aby uniknąć tego problemu.
Nawet w przypadku tabel tymczasowych? Czy nie ma sposobu, aby użyć tabel tymczasowych w Golang? – william
Dokumenty wskazują, że utworzenie tabeli tymczasowej nie spowoduje niejawnego zatwierdzenia (https://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html), ale nie ma możliwości dodania do nich indeksów jak to by było. – william
Tymczasowe tabele w MySQL są widoczne tylko dla bieżącego połączenia. Gdy połączenie się zamknie, zostaną upuszczone. Jeśli korzystasz z tabel tymczasowych, musisz utrzymywać połączenie podczas prowadzenia działalności. – Code4aliving