sql優化判斷
1.首先是定位效率比較低的sql語句
2.使用explain分析低效sql的執行計畫
type=const/system 單錶中最多有乙個匹配行
type=eq_ref 使用唯一索引,對於每個索引鍵值,表中只有一條記錄匹配
type=ref 使用的是非唯一索引或者字首索引掃瞄,返回匹配某個單獨記錄行
type=range 索引範圍掃瞄 常見的操作是》= , <=, > , < , between;
type=index 索引掃瞄,mysql遍歷整個索引來查詢匹配的行
type=all 全表掃瞄,mysql遍歷全表來找到匹配的行
3 innodb引擎的表在count(*)時經歷了sending data狀態,存在訪問資料的過程。但是myisam引擎的表在execute之後就直接結束了查詢,完全是不要訪問資料的
mysql索引問題
索引是在mysql儲存引擎層中實現的,而不是在伺服器層實現的,索引每種儲存引擎的索引都不完全相同的,也不是所有的儲存引擎都支援所有的索引型別
b-tree 最常見的索引,b樹索引不是二叉樹 而是平衡樹
hash索引。只有memory引擎支援
r-tree 空間索引是mysql的乙個特殊索引型別。主要用於地理空間資料型別
full-text 全文索引。innodb從mysql5.6開始提供對全文索引的支援
mysql使用索引的典型場景
1 匹配全值
2 匹配值的範圍查詢
3 匹配最左字首
4 僅僅對索引進行查詢
5 匹配列字首
mysql存在索引但是不能使用的典型場景
1,以%開頭的查詢不能使用b-tree索引
2, 查詢的資料型別出現隱式轉化的時候也不能使用索引
3 ,符合索引,如果不滿足最左原則的時候是不會使用符合索引的
4,如果你mysql估計使用索引比全表查詢要慢的時候就不在使用索引了
mysql檢查表和優化表
檢查表 check table tablename ,
分析表 analyze table tablename
優化表 optimize table tablename 這個命令可以將表的空間碎片進行合併,並且可以消除憂鬱刪除資料造成的空間浪費
mysql優化建議
1.建立 2.sql編寫mysql欄位型別 資料型別 含義date 3位元組,日期,格式 2014 09 18 time 3位元組,時間,格式 08 42 30 datetime 8位元組,日期時間,格式 2014 09 18 08 42 30 timestamp 4位元組,自動儲存記錄修改的時間 ...
MySQL優化建議
設計資料表的時候要遵守三正規化,但是不要嚴格遵守。可以適度打破正規化。乙個表字段不適合過多。常用表中只要保留常用的字段 盡量給每個字段新增not null 根據表的特點來選擇合適的表引擎,如果這個表經常被寫,應該選擇innodb,但是mysql5.6一般都是選擇innodb 根據表存放的資料來決定字...
mysql優化建議
mysql優化 1,整數型索引優於字元型索引 2,在長度夠用的情況下,盡可能用較小字段,能用int,就不用bigint,能用varchar 50 不用varchar 500 這樣可以節約更多的資源 3,即使varchar 1000 和varchar 100 在儲存相同長字元的時候,占用儲存空間一樣,...