mysql在開發中的優化技巧和慢查詢日誌的配置

2021-08-01 02:59:22 字數 1409 閱讀 2573

在平時開發中,資料庫的使用以及優化,也對我們所開發的系統或者平台的效能是一種考驗,如何既能夠滿足需求又能提高sql的效能,值得我們學習,今天就把自己平常遇到的讓大家了解一下。

1 當已知where條件的時候,避免在where子句中對子段進行函式操作,如果你的條件是新增了索引,這時搜尋引擎會放棄索引而進行去全表掃瞄,會降低執行效率。

例如:select * fron user where substring(name,1,4)='abcd' 姓名以abcd開頭的人員資訊//不建議使用,會 進行全表掃瞄,放棄name這個索引

select * from user where name like 'abcd%'//建議使用

2 應當盡量避免更新帶有索引的資料列,因為索引資料列的順序就是表記錄的物理儲存順序,一旦該列值改變將導致整個表記錄的順序的調整,會消耗相當大的資源,如果某一列經常會被進行更新,需要考慮一下這列是否需要建立索引

3 字段不定長的情況下,盡可能的使用varchar/nvarchar代替char/nchar,因為定長字段,當你字段的長度的不夠的的時候,會從右側進行空格自動進行補位,而變長字段,是你儲存多少,實際長度就是字段值的長度加上乙個用來記錄長度的位元組(+1),因為變長字段儲存空間小,可以節省儲存空間,其次對於查詢來說,在乙個相對較小的字段內搜尋效率會高些.如果是定長的話,例如身份證號碼盡可能選擇char.

4 select count(*) from user 和select count(id) from user的區別

兩者返回的結果是一樣的,如果有主鍵的話 select count(主鍵) from user 這個時候查詢最快。

5 有時候你並不能知道,哪條語句需要優化,順便說一下mysql慢查詢日誌的配置

如何開啟慢查詢日誌的檢視

首先執行以下sql:

//檢視你所配置的慢查詢的時間,預設是10s

show variables like 'long_query_time';//預設10s

//檢視慢查詢配置情況,是否開啟慢查詢

show status like '%slow_queries%';

//查詢慢查詢儲存日誌的路徑

show variable like '%slow%'

修改mysql下的my.ini檔案配置,需要加上兩句話

log-slow_queries="路徑"//「d:\log.txt」

long_query_time=5

第一句定義慢查詢日誌記錄的路徑,第二句話是定義查詢時間用時多少秒算是慢查詢

配置成功一下,重啟mysql,執行select varlables like '%show%',這時會把滿查詢開啟狀態,配置慢查 詢時間和日誌路徑查詢出來。根據日誌就可以發現你的查詢語句用時多長時間,是否需要優化

總結:簡單說了一下sql的優化和慢查詢日誌的配置,**說的不清楚或者存在錯誤,請多多交流指教,共同學習進步。

MySQL最好的優化技巧

2 使用連線 join 來代替子查詢 sub queries mysql 從4.1開始支援sql的子查詢。這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。例如,我們要將客戶基本資訊表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售資訊表中將所...

mysql最好的優化技巧

2 使用連線 join 來代替子查詢 sub queries mysql 從4.1開始支援sql的子查詢。這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中。例如,我們要將客戶基本資訊表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售資訊表中將所...

開發中需要注意的效能優化技巧

使用caesium獲取方法級耗時資料,並找出優化點 在進入乙個耗時的 重 方法之前使用輕量的 flag 判斷是否需要去做 使用區域性變數減少方法重複呼叫 宣告型別時用 ns enum,而不是 nsstring 謹慎使用 lock,通過良好的設計盡可能減小 lock 的影響範圍 需要在迴圈中建立大量臨...