MySQL效能優化之資料型別

2021-09-19 23:10:04 字數 613 閱讀 9225

mysql支援非常多的資料型別,選擇正確的型別對於獲得高效能至關重要。

以下幾個原則有助於做出更好的選擇:

(1)更小的通常更好:盡量使用可以正確儲存資料的最小的資料型別,更小的資料型別通常更快,因為它們占用更少的磁碟,cpu和記憶體,並且處理時需要的cpu週期也更加少。但是這裡需要注意選擇的最小型別要包含業務的最大範圍。

(2)簡單就好:簡單資料型別的操作通常需要更少的cpu週期。例如:整型比字元型的代價更低,因為字符集和校驗規則使得字元型更加複雜。在選擇資料型別的時候應該盡量選擇mysql內建型別,如不適用字串來儲存日期和時間,使用整型儲存ip等。

(3)盡量避免null:如果在查詢中包含可為null的列,這對於mysql將更加難以優化,因為可為null的列使得索引、索引統計和值都更加複雜。可為null的列需要更多的儲存空間,mysql也要對其特殊處理(當可為null的列被索引的時候,每乙個索引記錄都需要乙個額外的位元組),通常把null改為not null帶來的效能提公升比較小,所以在調優的時候沒有必要馬上改掉這種情況。

例如:datatime和timestamp都可以儲存相同型別的資料:時間和日期,精確到秒。但是timestamp只是用datetime一半的儲存空間,並且會根據時區變化。

mysql優化之選擇資料型別

對資料型別的選擇,可以影響索引的使用,進而影響效能,本博文簡單的說明如何在使用中,選擇資料型別,以幫助查詢過程中,查詢命令能夠更加快速的執行。應該盡可能多的使用數值操作,而不是字串操作。這個好像是顯而易見的,在字串的儲存和比較過程,需要多個位元組的參與。如果 小 型別夠用,就不要選用 大 型別。資料...

MySQL優化之 資料型別寬度

mysql中的整數型資料型別都可以指定顯示寬度 建立乙個表 create table tb emp id bigint 1 id欄位的資料型別為bigint 1 注意到後面的數字1,這表示的是該資料型別指定的顯示寬度,指定能夠顯示的數值中數字的個數。例如,假設宣告乙個int型別的字段 year in...

MySQL優化之 資料型別寬度

mysql中的整數型資料型別都可以指定顯示寬度建立乙個表 create table tb emp id bigint 1 id欄位的資料型別為bigint 1 注意到後面的數字1,這表示的是該資料型別指定的顯示寬度,指定能夠顯示的數值中數字的個數。例如,假設宣告乙個int型別的字段 year int...