關於mysql數據庫優化

關於mysql數據庫優化

 

以我之愚見,數據庫的優化在於優化存儲和查詢速度mysql

目前主要的優化我認爲是優化查詢速度,查詢速度快了,提升了用戶的體驗sql

 

 

我認爲優化主要從兩方面進行考慮,數據庫

優化數據庫對象,函數

優化sql優化

優化數據庫對象

1.優化表的數據類型,對於每一個字段用合適的數據類型,既能解決磁盤的存儲空間,又能避免浪費程序運行時物理內存的浪費,提升查詢速度。對象

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

 

2 經過拆分表來提升表的訪問效率。(對於MyISAM)內存

垂直拆分,水平拆分,若是一個表中一些列經常使用,一些列不經常使用,能夠用垂直拆分。缺點查詢全部數據的時候須要連表。字符串

 

3逆規範化hash

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

 增長派生列     之增長的列來自其餘表的數據,由其餘表的數據計算獲得。這樣是爲了減小鏈接操做,避免使用聚合函數

從新組表   對用戶常常查看的數據是使用兩張表連起來的數據,能夠從新租一張表,也是減小連表的操做

4使用中間表       中間表複製源表的部分數據,而且與源表隔離,在中間表上查詢統計操做不會影響源表。

中間表能夠靈活增長索引,或增長臨時的字段,從而提升統計查詢效率

 

2、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不須要再內存中建立臨時表

 

優化分頁

相關文章
相關標籤/搜索