簡體   English   中英

存儲過程還是視圖?

[英]Stored procedure or view?

目前,我正在使用許多存儲過程,例如:

CREATE PROCEDURE `get_bindings_chart`(IN in_layout_id TINYINT(3), IN in_game_id SMALLINT(5))
BEGIN
    SELECT  b.normal_group, b.normal_action, b.shift_group, b.shift_action, b.ctrl_group, b.ctrl_action, b.alt_group, b.alt_action, b.altgr_group, b.altgr_action, b.extra_group, b.extra_action, b.image_file, b.key_number
    FROM    bindings as b
    WHERE   b.layout_id = in_layout_id
    AND     b.game_id = in_game_id;
END

我可以創建一個視圖來做到這一點嗎? 哪個更好? 謝謝。

是關於視圖和存儲過程的概念

查看

1.不接受參數

2.可以用作大型查詢的構件。

3.只能包含一個Select查詢。

4.不能對任何表進行修改。

5.可以(有時)用作插入,更新,刪除查詢的目標。

儲存程序

1.接受參數

2.不能用作大型查詢的構件。

3.可以包含多個語句,例如if,else,loop等。

4.可以對一張或多張表進行修改。

5.不能用作插入,更新,刪除查詢的目標。

一個視圖可能更好,因為這里沒有實際的邏輯。

  1. 視圖可用於其他查詢(聯接,where子句等)
  2. 視圖可以具有附加的where子句以優化結果
  3. 視圖可以將order by子句應用於根據不同情況適當地對結果進行排序。

您可能會考慮使用存儲過程來添加更多的邏輯……也許會執行某些聚合和計算,而這些聚合和計算無法在單個語句中執行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM