Я хочу создать таблицу, представляющую собой кеш результатов из представления. Есть ли простой способ автоматически определить таблицу из определения представления, или мне придется сгладить ее вместе с show create table view
?Простой синтаксис «create table from view» в mysql?
29
A
ответ
40
Вы можете сделать CREATE TABLE SELECT
с точки зрения его постройки. Это должно дублировать структуру представления как новую таблицу, содержащую все строки представления. Вот этот MySQL syntax reference.
CREATE TABLE tbl_from_view AS
SELECT
col1,
col2,
col3,
col4,
col5
FROM your_view;
Обратите внимание, что вы захотите быть очень явным в выборе столбцов. Не рекомендуется делать SELECT *
с исходного вида. Удостоверьтесь также, что у вас есть псевдонимы для любых расчетных или агрегатных столбцов, таких как COUNT(*), MAX(*), (col1 + col2)
и т. Д.
1
Я также обнаружил, что в выводе mysqldump есть инструкции, которые создают представление в виде таблицы, перед тем, как он определяет представление. Я могу разобрать их и запустить их в качестве запросов.
Почему не рекомендуется делать SELECT *? –
@MartinBurch Как правило, не рекомендуется использовать SELECT * в производственном коде, предпочитая вместо этого явно указывать полученные столбцы и их порядок. В случае CTAS вы можете указать порядок столбцов. Если вы точно знаете, что вам нужны все столбцы, и они уже находятся в предпочтительном порядке, тогда продолжайте «SELECT *», но лучше быть явным и избегать сюжетных операций (например, большие столбцы бинарного столбца, добавленные вашими коллегами, без ведома вы) –