關於SQL優化的總結

2021-09-13 10:55:47 字數 523 閱讀 3077

最近面試中問到了資料庫sql優化的問題,答得不是很好,故總結一下。

主要針對資料庫索引來展開。

用索引提高效率: 

索引是表的乙個概念部分,用來提高檢索資料的效率,oracle使用了乙個複雜的自平衡b-tree結構. 通常,通過索引查詢資料比全表掃瞄要快. 當oracle找出執行查詢和update語句的最佳路徑時, oracle優化器將使用索引. 同樣在聯結多個表時使用索引也可以提高效率. 另乙個使用索引的好處是,它提供了主鍵(primary key)的唯一性驗證.。那些long或long raw資料型別, 你可以索引幾乎所有的列. 通常, 在大型表中使用索引特別有效. 當然,你也會發現, 在掃瞄小表時,使用索引同樣能提高效率. 雖然使用索引能得到查詢效率的提高,但是我們也必須注意到它的代價. 索引需要空間來儲存,也需要定期維護, 每當有記錄在表中增減或索引列被修改時, 索引本身也會被修改. 這意味著每條記錄的insert , delete , update將為此多付出4 , 5 次的磁碟i/o . 因為索引需要額外的儲存空間和處理,那些不必要的索引反而會使查詢反應時間變慢。

一些關於SQL優化的總結

由於這個專案一直都是mysql所以寫點mysql的 1.資料儲存引擎的選擇,myisam 和 innodb 的選擇 innodb 一般都會選擇這個,但是如果真的涉及到一些不涉及增刪的表,可以考慮下myisam 該引擎不支援事務,不支援外來鍵,優點就是訪問速度快,如果都是查詢的話,這個儲存引擎可能會使...

SQL優化總結

1.首先在建表的時候,選用最合適的字段型別。例如在定義name欄位時,可以使用varchar 32 不要使用char 32 以減少不必要的空間 而在定義郵編 郵編固定6位 時也沒必要使用varchar 6 了,直接使用char 6 會更好 對於性別,省份等可以定義為enum型別,因為數值型的資料檢索...

SQL優化總結

1,子查詢優化後問題 有些欄位的區分度飄忽飄忽不定,比如status欄位。我們這個欄位在專案中使用了索引。老版本優化時把主鍵id查出來放到子查詢中,再用status進行篩選,這樣有效果。公升級了mysql之後,出現慢查詢。這個時候子查詢不再適用,應使用ignore index status idx ...