MySQL 優化學習5 避免無聊的頻繁查詢

2021-08-29 09:37:34 字數 1233 閱讀 7897

在業務中,會遇到這樣的場景:

獲取到使用者id列表,需要得到使用者的具體資訊列表,使用者的id可能是遍歷某個列表得到的。

會出現如下兩種寫法

@test

public

void

testcmp()

long endtime = system.

currenttimemillis()

;//獲取結束時間

system.out.

println

("**********====");

system.out.

println(+

(endtime - starttime)

+"ms");

//輸出程式執行時間

system.out.

println

("**********====");

}@test

public

void

testcmp2()

tbuserservice.

getuserbyids

(ids)

;long endtime = system.

currenttimemillis()

;//獲取結束時間

system.out.

println

("**********====");

system.out.

println(+

(endtime - starttime)

+"ms");

//輸出程式執行時間

system.out.

println

("**********====");

}

每得到乙個使用者id就去查詢一次資料庫(每一次的查詢都是主鍵索引查詢)

得到所有id後 採用in語句(in語句一般是range型別的查詢) n

寫法1 - 測試耗時(毫秒)

寫法2 - 測試耗時(毫秒)

10341

373100

494460

500988

4991000

1304

538顯然頻繁的查詢資料庫將會非常的耗時,所以務必實現評估下資料量查詢次數以及查詢語句的效能,雖然in是耗時的,但是對比這種大批量的頻繁小查詢還是可取的。

mysql優化學習

2.大表拆小表 1 一般不會設計屬性過多的表 2 一般不會超過500到1000萬資料的表 3 有大資料的列單獨拆為小表 3.根據需求展示更加合理的表結構 4.常用屬性分離為小表 2 方法 3 建立 2 分類 3 隔離級別 2 latch 輕量級鎖,鎖的時間非常短,用來操作臨界資源 3 一致性的非鎖定...

mysql優化學習筆記

定位執行效率低的sql語句 通過explain分析效率低的sql 通過show profile分析sql 通過trace分析優化器如何選擇執行計畫 確定問題,採取措施優化 匹配全值,條件所有列都在索引中而且是等值匹配 匹配值的範圍查詢,字段必須在索引中 匹配最左字首,復合索引只會根據最左列進行查詢 ...

MySQL優化 學習筆記(2)

資料庫設計 3nf 1.第一正規化 列欄位資訊不可再分割,關係型資料庫自然滿足。2.第二正規化 滿足第一正規化,完全依賴主鍵,既是無重複行資料,通常設定主鍵實現。3.第三正規化 滿足第二正規化,要求乙個資料庫表中不包含已在其它表中已包含的非主關鍵字資訊,減少冗餘。注意 有時候需要反第三正規化,有必要...