mysql語句優化

2022-09-11 17:21:21 字數 1608 閱讀 3143

1.設計**的時選擇合適的字段型別

一般來說,資料庫中的表越小,在它上面執行的查詢就會越快,因此在建立表的時候,為了獲取更好的效能,我們可以將表的字段寬度設得盡可能的小。

1.1.盡可能選擇varchar來代替char,但是如果某字段長度已經固定(手機號,郵編等)我們可以使用char(11)來固定欄位的長度。同樣的整型字段我們我們也應該選擇合適長度的型別。

1.2.對於某些字段(省份,性別等)我們可以選擇整型欄位來代替文字型別,因為數值型的資料被處理的速度較快

2.使用連線(join)來代替部分子查詢

使用子查詢可以一次性完成很多邏輯上很多步驟才能完成的sql操作,同時可以避免事務和表鎖死,但是有些情況下可以使用連線代替子查詢,因為這樣不需要在記憶體中建立臨時表來完成這個查詢

2.1 在使用連線時可將部分資料查詢出來後再進行連線

3.使用聯合(union)來代替手動建立臨時表

它可以把需要使用臨時表的兩條或更多的select查詢合併到乙個查詢中,在客戶端結束回話的時間自動刪除臨時表,要注意所有的select語句中的字段數目要相同

3.1 盡量避免在查詢條件中使用or來連線條件,這樣會引擎放棄索引進行全表掃瞄

select id from sc where id = 10 or id = 20

可以選擇下面這種

select id from sc where id = 10 union

select id from sc where id = 20

4.使用索引

索引是提高資料庫效能的常用方法

4.1 索引應該用於join,where判斷和orderby排序的字段上

4.2 不要對含有大量重複值的字段建立索引,當索引列出現大量重複值的時間,查詢可能不回去利用索引

4.3 應該注意的是建立索引是需要消耗計算機資源的,不要隨意建立索引,索引提公升select查詢效率,但相應的降低了insert和update的效率,因為索引可能會被重新建立

5.優化查詢語句

絕大多數情況下,使用索引可以提高查詢的速度,但如果sql語句使用不恰當的話,索引將無法發揮它應有的作用

5.1 最好在相同型別欄位間進行比較操作

5.2 不要在查詢中讓字段型別進行自動轉換,這樣會引擎放棄索引進行全表掃瞄

5.3 在建立索引的字段上盡量不要使用函式進行操作,這樣會引擎放棄索引進行全表掃瞄

5.4 在搜尋字元型子串時,我們有時會使用like關鍵字和萬用字元,但這樣是以犧牲系統效能為代價使做法變簡單,部分搜尋可以嘗試下面的方法

select `id` from books where `name` like "mysql%"

select `id` from books where `name` >= "mysql" and `name` < "mysqm"

5.5 使用exists代替in是乙個好的選擇

5.6 盡量不要使用!=和<>或者對欄位進行null判斷,這樣會引擎放棄索引進行全表掃瞄

5.7 不要使用select *,用具體字段代替「*」

5.8  資料型別出現隱式轉換的時候也不會使用索引,特別是當列型別是字串,那麼一定記得在where條件中把字串常量值用引號引起來,否則即便這個列上有索引,mysql也不會用到,因為mysql預設把輸入的常量值進行轉換以後才進行檢索

mysql 語句優化例項 MySQL 語句優化例項

優化 limit 分頁 執行耗時 1.379s select from vio basic domain info limit 1000000,10 處理分頁慢查詢的方式一般有以下幾種 思路一 構造覆蓋索引 思路二 優化 offset 無法用上覆蓋索引,那麼重點是想辦法快速過濾掉前 100w 條資料...

mysql語句優化原則 MySQL語句優化的原則

1 使用索引來更快地遍歷表。預設情況下建立的索引是非群集索引,但有時它並不是最佳的。在非群集索引下,資料在物理上隨機存放在資料頁上。合理的索引設計要建立在對各種查詢的分析和 上。一般來說 a.有大量重複值 且經常有範圍查詢 和order by group by發生的列,可考慮建立群集索引 b.經常同...

mysql語句優化原則 mysql語句優化原則

有時候發現資料量大的時候查詢起來效率就比較慢了,學習一下mysql語句優化的原則,自己在正常寫sql的時候還沒注意到這些,先記錄下來,慢慢一點一點的學,加油!這幾篇部落格寫的都可以 使用索引的原則 1.最左字首匹配原則。mysql會一直向右匹配直到遇到範圍查詢 不會用到b的索引 where a 1 ...