存储过程还是视图?

时间:2016-05-19 03:10:02

标签: mysql sql stored-procedures

目前我正在使用大量存储过程,例如:

with pl as (
      insert into product_list(name, weight, type)
          select . . .
          returning *
     )
insert into product_price(id, price)
     select id, NULL
     from pl;

我可以创建一个视图来执行此操作吗?哪个更好?感谢。

2 个答案:

答案 0 :(得分:2)

是关于视图和存储过程的概念

<强>视图

1.不接受参数

2.可以在大型查询中用作构建块。

3.只能包含一个选择查询。

4.不能对任何表格进行修改。

5.可以(有时)用作插入,更新,删除查询的目标。

存储过程

1.接受参数

2.不能在大型查询中用作构建块。

3.可以包含if,else,loop等几个语句。

4.可以对一个或多个表执行修改。

5.不能用作插入,更新,删除查询的目标。

答案 1 :(得分:1)

视图可能更好,因为这里没有涉及真正的逻辑。

  1. 视图可用于其他查询(连接,where子句等)
  2. 视图可以使用其他where子句来优化结果
  3. 视图可以应用order by子句,以及针对不同情况对结果进行适当排序。
  4. 您可能会考虑使用存储过程添加更多逻辑...可能会执行一些无法在单个语句中执行的聚合和计算。