資料**網路學習。
問題背景:
在工作中遇到乙個問題,這個問題是這樣的,我新開發的模組在查詢時,開發庫上很快,切到測試庫上就巨慢,經過除錯,發現呼叫乙個公用的儲存過程中有乙個查詢很慢,ok,問題就是它了,但是只是庫不一樣,怎麼效能差距這麼大吶,納了悶了!
解決過程如下:
一、有人說是資料量的問題,我就看了下兩個庫的資料,開發庫反而比測試庫多了一百多萬條資料,這。。。肯定不是這個原因。
二、然後我就懷疑是索引問題,點開發庫中的表是有索引的,而測試庫的表是沒有索引的,woca,不應該是一樣的指令碼嗎!誰埋得坑,****!
三、加上索引後一切豁然開朗,速度是真快了不少,等等,我發現**還有優化的空間,去除 *,去除like,去除in,優化後速度又快了一點,優化部分可檢視總結。
總結:1.新增索引,主鍵和需要經常查詢的字段都要新增
2. 避免使用 *,指定具體字段
3. 用exists替代in,當然也可以用not exists替代not in
4. 避免使用like,能不用模糊查詢就不用
這裡提出的幾點優化思路和問題排查思路都非常好,一步一步定位並解決問題。關於總結部分,做一些補充:
1. 主鍵本身就是索引,按照主鍵查詢記錄效率是最高的;如果有多個欄位都需要有索引,且是同時查詢(即 where 條件有多個),一定要使用聯合索引
2. 如果表中包含的列特別多(例如超過20個),或者其中的幾列儲存的資料過大(例如 mediumtext 型別)。那麼,只查詢需要的列,不要使用 select *
3. exists 會比 in 的查詢效率高,資料量大的時候會有明顯的速度提公升
4. 使用 like 時,很多情況下不能使用到索引。所以,效率會降低很多,不要把耗時的操作放在資料庫裡做,即能不用模糊查詢就不用
mysql 學習心得
mysql 執行指令碼檔案 mysql c mydata.sql 向上鍵 能輸入以前輸入過的文字 為注釋 show create table article 看 article表的結構 article create table article id int 11 not null auto incr...
關於VC MFC的學習心得
通過學習呂鑫的書,對利用mfc編寫 有了一點認識。其實 的最終目的是資料互動與資料操作,其實是與記憶體裡的資料打交道。我們在利用vc 編寫 的時候,需要對資料進行操作。c 語法通常情況下對資料的操作是針對個體的,但是vc 是基於乙個記憶體模組的,這個模組實際上就是乙個類,而模組中儲存的具體的例項資料...
學習心得 我的學習心得
我是乙個已經步入中年的70後,離開校園已經20年了,因為當年的政策因素而未能圓我的大學夢,在20年的工作過程中總是因為缺少一張大學文憑而失去了很多機會,曾經也考慮過自考,但是乙個人去面對的時候總感覺心有餘而力不足。2018年3月份偶然讓我認識了尚德,原來自考還可以這樣學習。一直懷疑自己年紀大了記憶力...