У меня есть хранимые процедуры, которые создают временные таблицы. Я хотел бы затем выполнить запрос, который соединяется с этими временными таблицами.Есть ли способ использовать MySQL Temp Tables в Go?
Проблема заключается в том, что с базой данных/sql-дизайном Golang, единственный способ гарантировать, что вы получите одно и то же соединение для последующих запросов, - это создать транзакцию.
Я прошу о проблемах, если я завершу большинство своих SELECT в транзакции с целью доступа к таблице temp? Я понимаю, что потеряю некоторую производительность/масштабируемость, потому что я буду держаться за соединения из пула, а не позволять им возвращаться между запросами. Но мне интересно, начну ли я смотреть на блокировку или другие серьезные проблемы с этой стратегией.
Причина, по которой мне нужно сделать это, заключается в том, что план выполнения MySQL для многих моих таблиц очень низок (я делаю несколько объединений в больших таблицах). Я хотел бы выполнить некоторые промежуточные запросы и сохранить их результаты в временных таблицах, чтобы избежать этой проблемы.
Даже для временных таблиц? Нет ли способа использовать временные таблицы в Голанге? – william
Документы показывают, что создание таблицы temp не будет выполнять неявное коммитирование (https://dev.mysql.com/doc/refman/5.6/en/implicit-commit.html), однако нет способа добавить к ним индексы как это было бы. – william
Временные таблицы в MySQL видны только для текущего соединения. Как только это соединение закроется, они будут удалены. Если вы используете временные таблицы, вы должны удержать это соединение, пока занимаетесь своим бизнесом. – Code4aliving