以我之愚見,數據庫的優化在於優化存儲和查詢速度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不須要再內存中建立臨時表
優化分頁