Mysql資料庫優化的八種方式

2021-08-21 08:36:07 字數 2206 閱讀 7992

① 把表中字段的寬度設的盡可能小

②在可能的情況下盡量把字段設定為notnull,這樣在將來執行查詢的時候,資料庫不用去比較null值

③可以設定為數字型的盡量設定為數值型,因為數值型處理起來的速度比文字型別快得多。

delete from customerinfo

where customerid not in (select customerid from salesinfo)

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

select * from customerinfo

left join salesinfo on customerinfo.customerid=salesinfo.customerid

where salesinfo.customerid isnull

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

select name,phone from client union

select name,birthdate from author union

select name,supplier from product

①結合子查詢、連線、聯合當查詢內容需要很多語句查詢時,我們為了避免某條語句出錯而導致資料庫出現意外狀況從而使用事務。

②作用:要麼語句塊中每條語句都操作成功,要麼都失敗。保證資料庫的一致性和完整性。

③寫法:以begin關鍵字開始,commit關鍵字結束。sql操作失敗,會呼叫rollback命令把資料庫恢復到begin開始之前的狀態。

begin; insert into salesinfo set customerid=14; update inventory set quantity=11 where item='book'; commit;

注:當多使用者同時使用相同的資料來源時;他可以利用鎖定資料庫的方法來為使用者提供一種安全的訪問方式,這樣可以保證使用者的操作不被其它的使用者所干擾。所以因為這個特性,有時也會影響資料庫的效能。

可以通過鎖定表的方法來獲取比事務更好的效能

lock table inventory write select quantity from inventory where item='book';

...

update inventory set quantity=11 where item='book'; unlocktables

這裡,我們用乙個select語句取出初始資料,通過一些計算,用update語句將新值更新到表中。包含有write關鍵字的locktable語句可以保證在unlocktables命令被執行之前,不會有其它的訪問來對inventory進行插入、更新或者刪除的操作。

鎖定表的方法可以維護資料的完整性,但是它卻不能保證資料的關聯性。這個時候我們就可以使用外來鍵。

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

②不要對資料庫中某個含有大量重複值的字段設立索引否則會造成資料庫效能下降。

①最好在相同型別的字段間進行比較的操作。

在mysql3.23版之前,這甚至是乙個必須的條件。例如不能將乙個建有索引的int欄位和bigint欄位進行比較;但是作為特殊的情況,在char型別的字段和varchar型別欄位的字段大小相同的時候,可以將它們進行比較。

②在建有索引的字段上盡量不要使用函式進行操作。

例如,在乙個date型別的字段上使用yeae()函式時,將會使索引不能發揮應有的作用。

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

注:避免在查詢中讓mysql進行自動型別轉換,因為轉換過程也會使索引變得不起作用。

Mysql資料庫優化的八種方式

1 選取最適用的字段屬性 mysql可以很好的支援大資料量的訪問,但是一般說來,資料庫中的表越小,在它上面執行的查詢也就會越快。因此,在建立表的時候,為了獲得更好的效能,我們可以將表中字段的寬度設得盡可能小。2 使用連線 join 來代替子查詢 sub queries 3 使用聯合 union 來代...

資料庫優化的八種方式

在mysql資料中,表越小,資料庫執行的效率就越高,所以我們在建立表的時候,為了獲取更好的效能,我們就要將字段的寬度設定的盡可能的小。例如,在寫 號碼這個欄位的時候,我們使用char 255 或者vachar型別,都會給資料庫增加不必要的空間,我們可以用char 11 就可以了,不會造成不必要的空間...

優化MySQL資料庫效能的八種方法

create table customerinfo customerid int not null primary key customerid type innodb create table salesinfo salesid int not null,customerid int not nu...