mysql游標場景 資料庫游標的應用場景

2021-10-17 21:29:39 字數 966 閱讀 7228

我們大部分資料庫在查詢完成後返回給客戶端的基本上都是以乙個游標的方式,游標到底是乙個什麼東西呢,下面是我對它的理解:

b開始撥打a的**,**接通了。

a回答:稍等,我去查一查。

過了一會兒。

a響應了:喂,b,我查到資料了,你還在嗎?

b回答道:還在的,那你說一條,我記一條,你先發第一條給我。

a:第一條:***x

b:下一條。

。。。。。。此處省略若干字

a:沒有了。

然後b結束通話了**。

其實這個過程中,我們能看到b是一條一條向a要資料,但這裡的b是可以取一條先用筆記著,但如果b想做資料分析,也可以取一條資料去做資料分析,然後分析完去取下一條資料,所以這裡的處理方式如果應用的好其實可以很好的節約這個**費。

所以我們的客戶端每次在查詢到資料後其實是快速將資料取到客戶端的快取然後再展示出來。其實每次客戶端查詢到的結果都是乙個游標,由於客戶端遮蔽了這一層,使用者是無感知的。

但有乙個場景,比如b要查詢乙個分頁,先查第一頁,取完斷開**,開始去處理第一頁的資料,其實第一頁的資料也是游標取出來的,然後b處理資料這期間,a可能開始去處理其他事了,這個時候b處理完了,b以相同的條件要來查第二頁,對於a來說,可能有點印象(快取)能馬上查到,如果沒印象(快取)了又的從頭開始找,然後跳過第一頁的資料,去找第二頁,返回游標給b。

但是在某些特殊的場景,比如某個定時任務,要查某個表,這個表的資料可能很多,至少上百萬,對於b來說沒辦法把這些資料一下全部快取到b的本地,但如果分頁去查詢,又會導致a可能要重複的去查詢這個結果集,還得去根據分頁路由到新一頁的第一行,這時a豈不是做了很多重複的操作,效能是不是就會很差,那這個時候就可以由b發起查詢,直接根據游標一條一條的取過來,甚至可以取到一批資料後,立馬非同步讓其他人c給他處理一下,他繼續取下面的資料,當新的一批資料取到以後,說不定c這群人已經把上一批資料給處理完了,繼續處理這新的一批資料。這樣是不是可以節約資料庫的效能,又成功的避免了資料庫分頁帶來offset的效能影響。

資料庫游標的應用

關聯式資料庫中的操作會對整個行集產生影響。由select語句返回的行集包括所有滿足該語句where子句中條件的行,由語句所返回的完整的行集被稱為結果集。應用程式,特別是互動式聯機應用程式,並不總能將整個結果集作為乙個單元來有效地處理,這些應用程式需要一種機制以便每次處理一行或一部分行,游標就是提供這...

資料庫游標的編寫

1 定義游標 declare 游標名 cur youbiao cursor fast forward for select from 表名 fast forward 最快的游標 2 開啟游標 open 游標名 cur youbiao 2.1 對游標的操作 將每條資料讀取並輸出 2.1.1將游標向後移...

mysql游標的型別 MySQL 游標

以下的文章主要介紹的是mysql游標的使用筆記,其可以用在儲存過程的sql語句,其主要型別主要有以下幾種,以下就是對其詳細介紹,相信如果你掌握了這項技術,會在以後的學習或是工作中帶來很大的幫助。1 無返回結果語句,如 insert,update,drop,delete等 2 select語句返回單行...