我想创建一个表,它是视图结果的缓存。有没有一种简单的方法可以从视图的定义中自动定义表格,还是我必须从show create table view
汇总它?
答案 0 :(得分:49)
您可以从视图中执行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 :(得分:1)
我还发现在mysqldump输出中,有一些语句在视图定义之前将视图创建为表。我可以解析那些并将它们作为查询运行。