Mysql慢查詢優化示例

2021-09-24 18:32:20 字數 2116 閱讀 9362

參考(

當執行explain會發現shd表查詢type型別是all效率最低的( system

發現其中where條件裡面存在乙個欄位非索引 daishou_channel

修改之前查詢所用時間平均0.15

新增索引之後;

新增之後所用時間0.08

後續...索引型別

從資料結構角度

1. b-tree索引

最常見的索引型別,基於b-tree資料結構。b-tree的基本思想是,所有值(被索引的列)都是排過序的,每個葉節點到跟節點距離相等。所以b-tree適合用來查詢某一範圍內的資料,而且可以直接支援資料排序(order by)。但是當索引多列時,列的順序特別重要,需要格外注意。innodb和myisam都支援b-tree索引。innodb用的是乙個變種b+tree,而myisam為了節省空間對索引進行了壓縮,從而犧牲了效能。

2. hash索引

基於hash表。所以這種索引只支援精確查詢,不支援範圍查詢,不支援排序。這意味著範圍查詢或order by都要依賴server層的額外工作。目前只有memory引擎支援顯式的hash索引(但是它的hash是nonunique的,衝突太多時也會影響查詢效能)。memory引擎預設的索引型別即是hash索引,雖然它也支援b-tree索引。

3. spatial (r-tree)(空間)索引

只有myisam引擎支援,並且支援的不好。可以忽略。

4. full-text索引

主要用來查詢文字中的關鍵字,而不是直接與索引中的值相比較。full-text索引跟其它索引大不相同,它更像是乙個搜尋引擎,而不是簡單的where語句的引數匹配。你可以對某列分別進行full-text索引和b-tree索引,兩者互不衝突。full-text索引配合match against操作使用,而不是一般的where語句加like。

從邏輯角度

1、主鍵索引:主鍵索引是一種特殊的唯一索引,不允許有空值

2、普通索引或者單列索引

3、多列索引(復合索引):復合索引指多個欄位上建立的索引,只有在查詢條件中使用了建立索引時的第乙個字段,索引才會被使用。使用復合索引時遵循最左字首集合

4、唯一索引或者非唯一索引

5、空間索引:空間索引是對空間資料型別的字段建立的索引,mysql中的空間資料型別有4種,分別是geometry、point、linestring、polygon。mysql使用spatial關鍵字進行擴充套件,使得能夠用於建立正規索引型別的語法建立空間索引。建立空間索引的列,必須將其宣告為not null,空間索引只能在儲存引擎為myisam的表中建立

Mysql優化 慢查詢

先查詢是否開啟 開啟慢查詢日誌 set global slow query log 1 檢視引數設定 show variables like long query time 這裡查詢的是查過多少時間才會記錄成慢查詢 預設10 秒以上的s ql語句記錄到日誌中 修改引數 set global long...

Mysql慢查詢優化

二 優化這些慢查詢 3.細節優化 一般的應用系統,讀寫比例在10 1左右,而且插入操作和一般的更新操作很少出現效能問題,遇到最多的,也是最容易出問題的,還是一些複雜的查詢操作 修改配置檔案 在 my.ini 增加幾行 slow query log on log slow queries 儲存路徑 l...

Mysql 慢查詢優化

mysql 慢查詢的相關引數 使用show variables來查詢,set global來設定 slow query log 是否開啟慢查詢日誌,1表示開啟,0表示關閉。slow query log file mysql資料庫慢查詢日誌儲存路徑。可以不設定該引數,系統則會預設給乙個預設的檔案hos...