標籤:隔離 二叉樹 關於 負數 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資料庫最佳化