1. 程式人生 > >Mysql檢視和儲存過程

Mysql檢視和儲存過程

SQL裡面不帶引數的儲存過程與檢視的區別
  • 1、儲存過程是程式化的sql可以實現一般sql不能實現的功能。
    如:先檢索一個表得到一些資料,經過一定的編輯後更新到另外一個表中、這就可以用不帶引數的儲存過程實現。
  • 2、檢視是虛擬表,不儲存資料,儲存的是sql,檢索他的時候實際上是執行定義它的sql語句。

  • 說明:從你的問題上可以看出,你使用儲存過程僅僅是用它檢索資料,所以你會產生這樣的疑問,一定要記住,儲存過程理解的簡單一點就是“資料庫中的程式”,
    可以在不需要外部程式(如C,java,vb等)的情況下,讓資料庫自己解決複雜的、用一般sql不能實現的功能,而檢視則不然。

  • 檢視和儲存過程比是沒什麼意義的
    檢視就是虛擬表,把檢視和表比較還有點意思
    檢視不佔實際空間,可以對任意的表進行疊加和剪裁,利用分割槽檢視的功能,能加快表的I/O讀取時間(需要2塊以上硬碟)

  • 檢視只不過是儲存在sql server上的select語句罷了,當對檢視請求時,sql server會像執行一句普通的select語句那樣的執行檢視的select語句,它的效能並不像人們想象得那麼出色。
    而儲存過程在編譯後可以生成執行計劃,這使得每次執行儲存過程的時候效率將會更高,這是儲存過程,另外臺提交引數的時候,使用儲存過程將會減少網路頻寬流量,這是儲存過程相對於普通的sql語句在效能上的最大的優勢。

  • 檢視可以被看成是虛擬表或儲存查詢。可通過檢視訪問的資料不作為獨特的物件儲存在資料庫內。資料庫記憶體儲的是 SELECT 語句。SELECT 語句的結果集構成檢視所返回的虛擬表。使用者可以用引用表時所使用的方法,在 Transact-SQL 語句中通過引用檢視名稱來使用虛擬表。使用檢視可以實現下列任一或所有功能:
    將使用者限定在表中的特定行上。
    例如,只允許僱員看見工作跟蹤表內記錄其工作的行。
    將使用者限定在特定列上。
    例如,對於那些不負責處理工資單的僱員,只允許他們看見僱員表中的姓名列、辦公室列、工作電話列和部門列,而不能看見任何包含工資資訊或個人資訊的列。
    將多個表中的列聯接起來,使它們看起來象一個表。
    聚合資訊而非提供詳細資訊。

  • 例如,顯示一個列的和,或列的最大值和最小值。

    資料庫中的索引與書籍中的索引類似。在一本書中,利用索引可以快速查詢所需資訊,無須閱讀整本書。在資料庫中,索引使資料庫程式無須對整個表進行掃描,就可以在其中找到所需資料。

  • 儲存過程可以使得對資料庫的管理、以及顯示關於資料庫及其使用者資訊的工作容易得多。儲存過程是 SQL
    語句和可選控制流語句的預編譯集合,以一個名稱儲存並作為一個單元處理。儲存過程儲存在資料庫內,可由應用程式通過一個呼叫執行,而且允許使用者宣告變數、
    有條件執行以及其它強大的程式設計功能。
    儲存過程可包含程式流、邏輯以及對資料庫的查詢。它們可以接受引數、輸出引數、返回單個或多個結果集以及返回值。
    可以出於任何使用 SQL 語句的目的來使用儲存過程,它具有以下優點:
    可以在單個儲存過程中執行一系列 SQL 語句。
    可以從自己的儲存過程內引用其它儲存過程,這可以簡化一系列複雜語句。
    儲存過程在建立時即在伺服器上進行編譯,所以執行起來比單個 SQL 語句快。