優化Mysql資料庫的8個方法

2023-01-25 17:35:40 字數 1426 閱讀 5230

本文通過8個方法優化mysql資料庫:建立索引、複合索引、索引不會包含有null值的列、使用短索引、排序的索引問題、like語句操作、不要在列上進行運算、不使用not in和<>操作

1、建立索引

對於查詢佔主要的應用來說,索引顯得尤為重要。很多時候效能問題很簡單的就是因為我們忘了新增索引而造成的,或者說沒有新增更為有效的索引導致。如果不加索引的話,那麼查詢任何哪怕只是一條特定的資料都會進行一次全表掃描,如果一張表的資料量很大而符合條件的結果又很少,那麼不加索引會引起致命的效能下降。但是也不是什麼情況都非得建索引不可,比如性別可能就只有兩個值,建索引不僅沒什麼優勢,還會影響到更新速度,這被稱為過度索引。

2、複合索引

比如有一條語句是這樣的:select * from users where area='beijing' and age=22;

如果我們是在area和age上分別建立單個索引的話,由於mysql查詢每次只能使用一個索引,所以雖然這樣已經相對不做索引時全表掃描提高了很多效率,但是如果在area、age兩列上建立複合索引的話將帶來更高的效率。如果我們建立了(area, age, salary)的複合索引,那麼其實相當於建立了(area,age,salary)、(area,age)、(area)三個索引,這被稱為最佳左字首特性。因此我們在建立複合索引時應該將最常用作限制條件的列放在最左邊,依次遞減。

3、索引不會包含有null值的列

只要列中包含有null值都將不會被包含在索引中,複合索引中只要有一列含有null值,那麼這一列對於此複合索引就是無效的。所以我們在資料庫設計時不要讓欄位的預設值為null。

4、使用短索引

對串列進行索引,如果可能應該指定一個字首長度。例如,如果有一個char(255)的 列,如果在前10 個或20 個字元內,多數值是惟一的,那麼就不要對整個列進行索引。短索引不僅可以提高查詢速度而且可以節省磁碟空間和i/o操作。

5、排序的索引問題

mysql查詢只使用一個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;儘量不要包含多個列的排序,如果需要最好給這些列建立複合索引。

6、like語句操作

一般情況下不鼓勵使用like操作,如果非使用不可,如何使用也是一個問題。like “%aaa%” 不會使用索引而like “aaa%”可以使用索引。

7、不要在列上進行運算

select * from users where year(adddate)<2007;

將在每個行上進行運算,這將導致索引失效而進行全表掃描,因此我們可以改成

select * from users where adddate<‘2007-01-01';

8、不使用not in和<>操作

not in和<>操作都不會使用索引將進行全表掃描。not in可以not exists代替,id<>3則可使用id>3 or id<3來代替。

優化MYSQL資料庫的方法

1 選取最適用的欄位屬性 另外一個提高效率的方法是在可能的情況下,應該儘量把欄位設定為not null,這樣在將來執行查詢的時候,資料庫不用去比較null值。對於某些文字欄位,例如 省份 或者 性別 我們可以將它們定義為enum型別。因為在mysql中,enum型別被當作數值型資料來處理,而數值型資...

MySQL資料庫優化的方法

二 優化表的設計 三 使用快取 四 選擇正確的儲存引擎 資料庫的操作有很多,如果某些操作不當雖然不會出現錯誤,但是會導致資料庫效能下降,隨著mysql資料庫的使用,sql執行速度變慢,原因可能如下 硬體問題,如記憶體不足,網路速度慢等。一個資料庫的表過多,一張表的資料過多。大資料的查詢沒有建立索引或...

MySQL優化 資料庫優化

響應 執行時間長 等待時間長 查詢語句寫的爛 索引失效 關聯查詢太多join 設計缺陷或者不得已的需求 伺服器調優及各個引數設定 快取 執行緒等 索引介紹 mysql官方對索引的定義為 索引 index 是幫助mysql高效獲取資料的資料結構。可以得到索引的本質 索引是資料結構。簡單的理解為 排好序...