SQL Server技術問題之遊標優缺點
分類:
MS SQL SERVER
支援三種型別的遊標:Transact_SQL 遊標
,API 伺服器遊標
和客戶遊標
。
(1) Transact_SQL 遊標
Transact_SQL 遊標是由DECLARE CURSOR
語法定義、主要用在Transact_SQL 指令碼、儲存過程和觸發器中。Transact_SQL 遊標主要用在伺服器上,由從客戶端傳送給伺服器的Transact_SQL 語句或是批處理、儲存過程、觸發器中的Transact_SQL 進行管理。Transact_SQL 遊標不支援提取塊或多行。
(2) API 遊標
API 遊標支援在OLE DB, ODBC 以及DB_library 中使用遊標函式,主要用在伺服器上。每一次客戶端應用程式呼叫API 遊標函式,MS SQL SEVER
的OLE DB
提供者、ODBC驅動器或DB_library 的動態連結庫(DLL) 都會將這些客戶請求傳送給伺服器以對API遊標進行處理。
(3) 客戶遊標
客戶遊標主要是當在客戶機上快取結果集時才使用。在客戶遊標中,有一個預設的結果集被用來在客戶機上快取整個結果集。客戶遊標僅支援靜態遊標而非動態遊標。由於伺服器遊標並不支援所有的Transact-SQL 語句或批處理,所以客戶遊標常常僅被用作伺服器遊標的輔助。因為在一般情況下,伺服器遊標能支援絕大多數的遊標操作。
由於API 遊標和Transact-SQL 遊標使用在伺服器端,所以被稱為伺服器遊標,也被稱為後臺遊標,而客戶端遊標被稱為前臺遊標。
優點:
1)允許程式對由查詢語句select
返回的行集合中的每一行執行相同或不同的操作,而不是對整個行集合執行同一個操作。
2)提供對基於遊標位置的表中的行進行刪除和更新的能力。
3)遊標實際上作為面向集合的資料庫管理系統(RDBMS)和麵向行的程式設計之間的橋樑,使這兩種處理方式通過遊標溝通起來。
缺點:
處理大資料量時,效率低下,佔用記憶體大;
一般來說,能使用其他方式處理資料時,最好不要使用遊標,除非是當你使用while
迴圈,子查詢,臨時表,表變數,自建函式或其他方式都無法處理某種操作的時候,再考慮使用遊標。
資料庫遊標的作用及優缺點
遊標實際上是一種能從包括多條資料記錄的結果集中每次提取一條記錄的機制。遊標充當指標的作用。儘管遊標能遍歷結果中的所有行,但他一次只指向一行。
概括來講,SQL的遊標是一種臨時的資料庫物件,即可以用來存放在資料庫表中的資料行副本,也可以指向儲存在資料庫中的資料行的指標。遊標提供了在逐行的基礎上操作表中資料的方法。
遊標的一個常見用途就是儲存查詢結果,以便以後使用。遊標的結果集是由SELECT
語句產生,如果處理過程需要重複使用一個記錄集,那麼建立一次遊標而重複使用若干次,比重複查詢資料庫要快的多。
大部分程式資料設計語言都能使用遊標來檢索SQL資料庫中的資料,在程式中嵌入遊標和在程式中嵌入SQL語句相同
因為我們做的資料量大,而且系統上跑的不只我們一個業務。所以,我們都要求儘量避免使用遊標,遊標使用時會對行加鎖,可能會影響其他業務的正常進行。而且,資料量大時其效率也較低效。另外,記憶體也是其中一個限制。
因為遊標其實是相當於把磁碟資料整體放入了記憶體中,如果遊標資料量大則會造成記憶體不足,記憶體不足帶來的影響大家都知道了。
所以,在資料量小時才使用遊標
相關文章
- SQL Server儲存過程的優缺點SQLServer儲存過程
- RPA 技術的優缺點有哪些
- 大資料入門學習之Hadoop技術優缺點大資料Hadoop
- Delphi 技術的優缺點與應用
- SQL SERVER——高可用技術概述SQLServer
- SQL、NoSQL和NewSQL的優缺點比較SQL
- 好程式設計師大資料入門學習之Hadoop技術優缺點程式設計師大資料Hadoop
- SQL Server內建的HTAP技術SQLServer
- 物聯網常見的十種定位技術的優缺點
- SQL Server AlwaysOn的Oracle等價技術SQLServerOracle
- SQL SERVER優化SQLServer優化
- Hive 優缺點Hive
- MapReduce優缺點
- RabbitMQ優缺點MQ
- SQL Server底層架構技術對比SQLServer架構
- HTTPS 優點與缺點HTTP
- SQL Server 查詢超時問題排查SQLServer
- 淺談SQL Server中的快照問題SQLServer
- js之閉包(概念、優缺點、應用)JS
- 好程式設計師大資料培訓分享Hadoop技術優缺點程式設計師大資料Hadoop
- Docker的優缺點Docker
- 技術管理之如何協調加班問題
- Python基礎知識之Django框架優缺點!PythonDjango框架
- SQL Server實戰六:T-SQL、遊標、儲存過程的操作SQLServer儲存過程
- 內聯的優缺點
- HTTP1.1 優缺點HTTP
- Ajax原理以及優缺點
- 繼承的優缺點繼承
- serverless與容器優缺點Server
- hadoop-HDFS優缺點Hadoop
- MySQL索引的優缺點MySql索引
- 節點快取的優缺點快取
- MyBatis的優缺點以及特點MyBatis
- 繼承的優點和缺點繼承
- iframe有哪些優點和缺點?
- SQL Server一次SQL調優案例SQLServer
- SQL Server database mail問題診斷一例SQLServerDatabaseAI
- SQL Server資料庫恢復常見問題SQLServer資料庫