【发布时间】:2016-04-26 21:50:48
【问题描述】:
我是 mysql 的新手。我要做的是创建一个新表,它是原始 table 的副本,在特定条件下还有一列。哪个条件显示为新列就是新表。我的意思是:
让 table 是给定点 (x,y) 的序列 我想创建表 temp 是 (x,y,r) 其中 r = x^ 2 + y^2
CREATE temp LIKE table;
ALTER TABLE temp ADD r FLOAT;
INSERT INTO temp (x,y) SELECT * FROM table WHERE x*x+y*y<1;
UPDATE temp SET r=x*x+y*y;
没关系,它给出了我想要的,但是我的数据库比这个简单的例子大得多,在这里我计算了两个表中半径 r 的两倍。优化不是很好。
有没有办法将子句直接传递到新列中?
提前致谢。
【问题讨论】:
-
为什么不创建一个视图呢?这样
r就会在您使用视图时计算 -
视图未在 MySQL 中实现。因此,每次访问“表”(由视图定义)时,查询都会被执行——相当慢......
-
@Benvorth 拥有一个几乎完全冗余的表会更好吗?
-
如果性能是一个问题:是的。
-
解释性能损失超过维护损失?请参阅@TomH 答案。得到我的投票!
标签: mysql sql database optimization