關於mysql資料庫最佳化

來源:互聯網
上載者:User

標籤:隔離   二叉樹   關於   負數   enter   表操作   適合   使用者   掃描   

關於mysql資料庫最佳化

 

以我之愚見,資料庫的最佳化在於最佳化儲存和查詢速度

目前主要的最佳化我認為是最佳化查詢速度,查詢速度快了,提高了使用者的體驗

 

 

我認為最佳化主要從兩方面進行考慮,

最佳化資料庫物件,

最佳化sql

最佳化資料庫物件

1.最佳化表的資料類型,對於每個欄位用合適的資料類型,既能解決磁碟的儲存空間,又能避免浪費程式運行時實體記憶體的浪費,提高查詢速度。

      比如對於不會有負數的整數類型,使用無符號整型,整數範圍很小的用tinyint 或者smallint

 

2 通過拆分表來提高表的訪問效率。(對於MyISAM)

垂直分割,水平分割,如果一個表中一些列常用,一些列不常用,可以用垂直分割。缺點查詢所有資料的時候需要連表。

 

3逆正常化

  增加冗餘列,    冗餘列值得是多個表中有相同的列,這樣做是避免查詢的時候進行連表操作

 增加衍生的資料行     之增加的列來自其他表的資料,由其他表的資料計算得到。這樣是為了減少串連操作,避免使用彙總函式

重新組表   對使用者經常查看的資料是使用兩張表連起來的資料,可以重新租一張表,也是減少連表的操作

4使用中間表       中間表複製源表的部分資料,並且與源表隔離,在中間表上查詢統計操作不會影響源表。

中間表可以靈活增加索引,或增加臨時的欄位,從而提高統計查詢效率

 

二、sql最佳化

 

·  在表的查詢中,有這個幾種查詢類型,

1遍曆全表   all

2 掃描全索引 遍曆整個索引   index

3 索引範圍掃描,常見於<   >  >=  between    range

4使用非唯一索引或者唯一索引的首碼

5  唯一索引,對於每個索引的索引值,表中只有一條記錄匹配 eq_ref

6 const/system  單表中最多有一個匹配行,查詢速度非常快,例如根據主鍵或者唯一索引

7 null 對於null, mysql不用返回直接能得到結果

 

索引是資料庫最佳化最常用和最重要的手段之一。

索引的存放裝置分類:

B-tree索引 最常用

HASH索引  只有memory支援

R-Tree索引 空間索引,不常用

Full-text 全文索引

 

比較常用的是B-Tree索引和hash索引,hash索引適合key-value查詢,不適合範圍尋找

b-tree索引並不是二叉樹,而是平衡樹

 

注意對於查詢的的列是字串,要加上引號,不然不會用到索引。

對於 or 分隔開的條件,如果or 前面的列中有索引,而後面的列中沒有索引,則不會用到索引。

對於插入操作

盡量使用多個值表的insert語句,這種方式大大減少用戶端與資料庫的串連,關閉等操作。

 

避免使用子查詢,用效率更高的join,join 效率更高是因為mysq不需要再記憶體中建立暫存資料表

 

最佳化分頁

 

關於mysql資料庫最佳化

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.