資料庫訪問優化之二 返回更少的資料

2022-02-22 12:28:17 字數 2417 閱讀 5204

一般資料分頁方式有:

1.1、客戶端(應用程式或瀏覽器)分頁

優點:編碼簡單,減少客戶端與應用伺服器網路互動次數

缺點:首次互動時間長,占用客戶端記憶體

適應場景:客戶端與應用伺服器網路延時較大,但要求後續操作流暢,如手機gprs,超遠端訪問(跨國)等等。

1.2、應用伺服器分頁

list list=executequery(「select *from employee order by id」);

int count=list.size();

list sublist= list.sublist(10, 20);

優點:編碼簡單,只需要一次sql互動,總資料與分頁資料差不多時效能較好。

缺點:總資料量較多時效能較差。

適應場景:資料庫系統不支援分頁處理,資料量較小並且可控。

1.3、資料庫sql分頁

採用資料庫sql分頁需要兩次sql完成,

乙個sql計算總數量,乙個sql返回分頁後的資料

優點:效能好

缺點:編碼複雜,各種資料庫語法不同,需要兩次sql互動。

oracle資料庫一般採用rownum來進行分頁,常用分頁語法有如下兩種:

1. 直接通過rownum分頁:

select

*from

(

select a.*,rownum rn from

(select

*from product a where company_id=? order

bystatus) a

where rownum<=20)

where rn>

10;

資料訪問開銷=索引io+索引全部記錄結果對應的表資料io。

2. 採用rowid分頁語法

優化原理是通過純索引找出分頁記錄的rowid,再通過rowid回表返回資料,要求內層查詢和排序欄位全在索引裡。

create

index myindex on

product(company_id,status);

select b.*

from

(

select

*from

(

select a.*,rownum rn from

(select rowid rid,status from product a where company_id=? order

bystatus) a

where rownum<=20)

where rn>

10) a, product b

where a.rid=b.rowid;

資料訪問開銷=索引io+索引分頁結果對應的表資料io

例項:乙個公司產品有1000條記錄,要分頁取其中20個產品,假設訪問公司索引需要50個io,2條記錄需要1個表資料io。

那麼按第一種rownum分頁寫法,需要550(50+1000/2)個io,按第二種rowid分頁寫法,只需要60個io(50+20/2);

通過去除不必要的返回字段可以提高效能,例:

調整前:select * from product where company_id=?;

調整後:select id,name from product where company_id=?;

優點:1、減少資料在網路上傳輸開銷

2、減少伺服器資料處理開銷

3、減少客戶端記憶體占用

4、字段變更時提前發現問題,減少程式bug

5、如果訪問的所有字段剛好在乙個索引裡面,則可以使用純索引訪問提高效能。

缺點:增加編碼工作量

由於會增加一些編碼工作量,所以一般需求通過開發規範來要求程式設計師這麼做,否則等專案上線後再整改工作量更大。

如果你的查詢表中有大字段或內容較多的字段,如備註資訊、檔案內容等等,那在查詢表時一定要注意這方面的問題,否則可能會帶來嚴重的效能問題。

如果表經常要查詢並且請求大內容欄位的概率很低,我們可以採用分表處理,將乙個大表分拆成兩個一對一的關係表,將不常用的大內容字段放在一張單獨的表中。

如一張儲存上傳檔案的表:

t_file(id,file_name,file_size,file_type,file_content)

我們可以分拆成兩張一對一的關係表:

t_file(id,file_name,file_size,file_type)

t_filecontent(id, file_content)

通過這種分拆,可以大大提少t_file表的單條記錄及總大小,這樣在查詢t_file時效能會更好,當需要查詢file_content欄位內容時再訪問t_filecontent表。

資料庫訪問優化法則詳解之返回更少的資料

資料庫訪問優化法則詳解之返回更少的資料 返回更少的資料 如果返回的資料更少,則可以減少網路傳輸或磁碟訪問。可通過分頁處理等方式減少返回資料。資料分頁處理 常用資料分頁方式有以下3 種。1 客戶端 應用程式或瀏覽器 分頁 優點 編碼簡單,減少客戶端與應用伺服器網路的互動次數。缺點 首次互動時間長,占用...

優化頁面訪問速度(二) 資料庫優化

一 概述 資料庫優化,主要包括資料表設計 索引 sql語句 表拆分 資料庫伺服器架構等方向的優化。二 資料庫設計 在建表的時候,就需要考慮到將來的使用場景,盡量在建表初期就設計好。1 儲存引擎 mysql常被提到的儲存引擎就是innodb和mysiam,其實現在主要都在用innodb了。兩者的區別 ...

資料庫訪問優化法則

從圖上可以看到基本上每種裝置都有兩個指標 延時 響應時間 表示硬體的突發處理能力 頻寬 吞吐量 代表硬體持續處理能力。從上圖可以看出,計算機系統硬體效能從高到代依次為 cpu cache l1 l2 l3 記憶體 ssd硬碟 網路 硬碟 根據資料庫知識,我們可以列出每種硬體主要的工作內容 cpu及記...