MySQL資料的優化方案

2022-07-01 16:33:07 字數 2093 閱讀 2612

一.選取最使用的字段屬性

mysql可以使用的支援大資料量的訪問,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快,因此在建立表的時候,為了獲得更好的效能,我們可以將表中的字段的寬度盡量設定的可能小.

另外乙個提高效率的方法就是在可能的情況下,應該盡量把字段設定為notnull,這樣在將來執行查詢的時候,資料庫不用去比較null值.

二.是乙個連線(join)來代替子查詢

這個技術可以使用select語句來建立乙個單列的查詢結果,然後把這個結果作為過濾條件用在另乙個查詢中,使用子查詢可以一次性的完成很多邏輯上需要多個步驟才能完成的sql操作.

例如,我們要將客戶基本資訊表中沒有任何訂單的客戶刪除掉,就可以利用子查詢先從銷售資訊表中將所有發出訂單的客戶id取出來,然後將結果傳遞給主查詢,如下所示:

deletefromcustomerinfo

wherecustomeridnotin(selectcustomeridfromsalesinfo)

同時也可以避免事務或者表鎖死.並且寫起來也很容易.有些情況下,子查詢可以被更加有效的連線(join)替代,

例如,假設我們要將所有沒有訂單記錄的使用者取出來,可以用下面這個查詢完成:

select*fromcustomerinfo

wherecustomeridnotin(selectcustomeridfromsalesinfo)

如果使用連線(join)..來完成這個查詢工作,速度將會快很多。尤其是當salesinfo表中對customerid建有索引的話,效能將會更好,查詢如下:

select*fromcustomerinfo

leftjoinsalesinfooncustomerinfo.customerid=salesinfo.customerid

wheresalesinfo.customeridisnull

連線(join)..之所以更有效率一些,是因為mysql不需要在記憶體中建立臨時表來完成這個邏輯上的需要兩個步驟的查詢工作。

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

mysql從4.0版本開始支援union查詢,它可以吧需要使用臨時表的兩條或者更多的select查詢合併的乙個查詢中,在客戶端的查詢會話結束的時候,臨時表會被自動刪除,從而保證資料庫的整齊.高效.使用union來建立查詢的時候,我們只需要用union作為關鍵字吧多個select語句連線起來就可以le,要注意的是所有select語句中的字段數目要相同.

例子就演示了乙個使用union的查詢。

selectname,phonefromclientunion

selectname,birthdatefromauthorunion

selectname,supplierfromproduct

使用索引

索引是提高資料庫效能的常用方法,它可以令資料庫伺服器以比沒有索引快得多的速度檢索特定的行,尤其是在查詢語句當中包含有max(),min()和orderby這些命令的時候,效能提高更為明顯。

那該對哪些字段建立索引呢?

一般說來,索引應建立在那些將用於join,where判斷和orderby排序的字段上。盡量不要對資料庫中某個含有大量重複的值的字段建立索引。對於乙個enum型別的字段來說,出現大量重複值是很有可能的情況

例如customerinfo中的「province」..欄位,在這樣的字段上建立索引將不會有什麼幫助;相反,還有可能降低資料庫的效能。我們在建立表的時候可以同時建立合適的索引,也可以使用altertable或createindex在以後建立索引。此外,mysql從版本3.23.23開始支援全文索引和搜尋。全文索引在mysql中是乙個fulltext型別索引,但僅能用於myisam型別的表。對於乙個大的資料庫,將資料裝載到乙個沒有fulltext索引的表中,然後再使用altertable或createindex建立索引,將是非常快的。但如果將資料裝載到乙個已經有fulltext索引的表中,執行過程將會非常慢。

在搜尋字元型字段時,我們有時會使用like關鍵字和萬用字元,這種做法雖然簡單,但卻也是以犧牲系統效能為代價的。

關於mysql的優化方案 資料庫優化方案

關於資料庫優化方面的文章很多,但是有的寫的似是而非,有的不切實際,對乙個資料庫來說,只能做到更優,不可能最優,並且由於實際需求不同,優化方案還是有所差異,根據實際需要關心的方面 速度 儲存空間 可維護性 可拓展性 來優化資料庫,而這些方面往往又是相互矛盾的,下面結合網上的一些看法和自己的一些觀點做個...

MySQL資料庫優化 優化方案

可以從哪幾個方面進行資料庫的優化?如下圖所示 sql及索引優化 根據需求寫出良好的sql,並建立有效的索引,實現某一種需求可以多種寫法,這時候我們就要選擇一種效率最高的寫法。這個時候就要了解sql優化 資料庫表結構優化 根據資料庫的正規化,設計表結構,表結構設計的好直接關係到寫sql語句。系統配置優...

Mysql的優化方案

1 避免放棄使用索引而進行全表掃瞄的情況 在where後的條件中盡量不使用 2 正確的使用索引 3 正確選擇exist 與 in 和 not exist 與 not in 在任何情況下 not exist 的效率都高於 not in 4 使用join來替代子查詢 子查詢 通過select語句來建立乙...