當前位置:
首頁 > 最新 > 資料庫使用經驗分享

資料庫使用經驗分享

寫在前面

從三月中旬到昨天為至,王豆豆基本中午都會去學車,練習科目二,想說練車真的好累,想要通過考試一定要學會控制速度,還好只要堅持下來,結果就會是好的。

王豆豆已經有一個多月都沒有更新文章了,有好幾個小夥伴在問王豆豆最近怎麼了?怎麼好久都沒有寫文章了?這是懶癌犯了,哈哈。。。

今天王豆豆想給大家分享一下王豆豆在工作中使用資料庫的經驗。

資料庫的重要性

資料庫的使用頻率與公司的產品和工作內容有很大關係。

王豆豆現在工作中基本一天有80%的時間都需要與資料庫打交道,使用頻率非常高,查詢數據、檢查數據、修改數據模擬新測試點等等,這是因為王豆豆現在所做的產品是屬於後台類產品,沒有前端界面,全靠postman模擬前端系統訪問,同時靠任務去驅動業務流程,這就需要測試人員對資料庫的結構、SQL語言和linux平台比較熟悉。

對資料庫操作過程中,王豆豆使用最多的還是select語句,其他語句使用頻率不高。王豆豆主要分享在查詢數據中使用到的幾個小技巧。

01

limit

不知道大家對limit熟悉不?以前王豆豆寫過幾篇資料庫的系列文章中也提到過這個詞,那這個使用方法是什麼呢?

Limit—大家都知道是限制,在資料庫中使用limit時,其實是限制數據的條數,可以是查詢時限制查詢到的條數,也可以是修改/刪除時限制修改/刪除時的條數。

Limit是目前王豆豆使用最頻繁的語句。

查詢任務表中最前面的十條記錄

select * from task order by task_id desc limit 10;

2.修改任務表中最前面5條記錄的狀態為open

Update task set task_status = 『open』 order by task_id desc limit 5;

limit後面跟數據的條數,可以是10,50,100,500,1000等,任意數字都可以,當然0也可以,只不過這表示查詢到的數據條數為0條。

為什麼王豆豆如此熱衷於使用limit呢?

因為在實際工作中資料庫經常使用到的表數據量是非常大的,對於在大量數據中查詢到自己想要的數據,非常慢,這不僅對影響操作人的時間,而且如果同時操作的人多了,對資料庫的性能非常有影響,特別是線上的資料庫,王豆豆每次上線一個項目之後需要同步跟蹤線上數據,對線上資料庫操作時更注意,不能太浪費資料庫的性能。

要操作資料庫過程中,limit可以解決一些問題,但如果想要查詢速度蠻快,那還需要有另外的操作。

02

提高查詢效率

一旦碰到查詢大量數據,查詢數據的速度真是太慢了。

這讓我想到了在學車過程中,教練一直提醒我,你的速度太快了,壓離合,控制車速,通過考試最重要的就是速度要慢,但是王豆豆直到快考試了,速度還是一直居高不下,以至於王豆豆在臨近考試時還在憂慮中,速度怎樣才能慢下來。

在實際工作中,王豆豆卻希望所有都快,王豆豆最受不了的就是查詢速度太慢了,看到一直在query中就想著要不要修改一下語句。

最怕看到這張圖片:

那我們在查詢中如何才能提高查詢速度呢?

1.當數據量太大時,我們可以通過多條件查詢,在查詢中盡量可能地去細化條件,輸出更多的查詢條件組合,這能提升一步的速度

2.盡量減少使用 select * 的用法

星號大家都知道表示查詢出表中所有的欄位,正因為是這個原因,為了提升效率盡量減少使用,程序中的代碼絕對不允許使用的。

3.找到索引欄位,根據索引欄位去查詢

索引中又分為唯一索引和普通索引,唯一索引查詢速度優於普通索引。

使用唯一索引查詢任務表:select * from task order by task_id desc;

使用普通索引查詢任務表:select * from task order by task_order_no desc;

如果一個索引中包含多個欄位,那個想要構成索引查詢那查詢條件中需要包含這幾個欄位。

例如這樣的:KEY `Idx_task_type_next_run_at` (`task_type`,`task_next_run_at`)

select task_id from task wheretask_type = "msgsender" andtask_next_run_at >= "2018-04-03 12:00:00";

在查詢中可以使用這些方法來提高查詢效率,但是數據量如果是實在太多了,查詢速度還是會慢的,但是相比而言會好很多。

03

REPLACE函數

REPLACE函數—雖然不是王豆豆經常使用的語句,但是王豆豆覺得這個語句真的非常好用,如果掌握了用法能節省很多修數據的時間,特別是修改一張表中某些數據中某個欄位部分數據時,這時REPLACE的優勢就完全體現出來了。

用法:欄位名 = REPLACE(str1,str2,str3)/欄位名 = REPLACE(欄位名,被替換字元串,替換字元串)

含義:用第三個表達式替換第一個字元串表達式中出現的所有第二個給定字元串

UPDATE `task`

SET task_id = REPLACE(task_id,』22』,』33")

WHERE task_create_at >= "2018-04-02";

REPLACE函數不僅可以對某個欄位進行部分數據增加,還可以進行修改和刪除,方法靈活多變,在實際使用過程可以根據實際場景進行運用。

作為軟體測試人員不僅我們要熟練掌握資料庫的使用和SQL語言,這樣會大幅提升我們的工作效率,而且我們還需要對資料庫中的數據保持高度的敏感,這是因為我們經常檢查的就是數據,而正是這些數據決定了我們的功能或業務是否正確實現了。

其次之外,我們對錶結構,表與表之間的關聯性,數據的存儲和取值之間的關係也需要多掌握,作為測試人員對資料庫和其中的數據,我們還有很多要學的,要掌握的,學習都需要一定的過程,掌握也需要花費一定的時間,但堅持下來去學習,學會去分析,結果最終一定不會壞的。

多謝大家對王豆豆的支持和關注,希望在新年我們能一起成長得更好。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 資深Tester 的精彩文章:

TAG:資深Tester |