時間索引 mysql mysql 時間索引執行計畫

2021-10-25 14:10:02 字數 897 閱讀 3849

專案中查詢時間斷的資料發現查詢時間很長。懷疑沒有走時間的索引,於是explain一下

explain select * from t_order where created_at>'2015-01-01 00:00:00' and created_at

解析:id:

表示執行的順序,id的值相同時,執行順序是從上到下,id的值不同時,id的值越大,優先順序越高,越先執行

select_type:

1、******表示不包含子查詢和union

2、查詢中若包含子查詢,最外層查詢則標記為:primary

3、在select或者where列表中包含了子查詢,則標記為:subquery

4、在from的子查詢會標記為:derived

5、從union selcect出來的結果被標誌為:union result

type:

表示找到需要行的訪問型別

all,index,range,ref,eq_ref,const,system,null

效能從最差到最好

key:

表示使用哪個索引

從上面的截圖看沒有走create_at索引。

上網查到資料:

當表的索引被查詢,會使用最好的索引,除非優化器使用全表掃瞄更有效。優化器優化成全表掃瞄取決與使用最好索引查出來的資料是否超過表的30%的資料。

優化器更加複雜,其估計基於其他因素,列入表的大小,行數和i/o塊的大小。

發現原因:

使用count整張表的資料,和條件的資料發現已經超過30%,,所以失效。在建立索引的時候,要根據列基數來建立。列基數=列中不同的資料/除以總資料。越接近1表示

重複資料越少,越適合建立索引。

解決:根據上面的理論,時間斷的範圍通過訂單號查詢。因為訂單號可以區分時間,並且列基數=1;

Mysql Mysql索引詳解

索引概述 mysql資料庫系統除了儲存資料之外,為了能夠提高對資料的快速訪問,mysql為此設計了索引,mysql索引是一種可以快速提高mysql高效查詢資料的一種資料結構。舉個例子索引就跟我們的書本的目錄一樣,如果一本書沒有目錄,那麼你要找想看的地方,那會是相當費勁的,只能一頁頁去翻,而資料庫的索...

索引 mysql MySql索引那些事

概述一 什麼是索引 資料庫索引,是資料庫管理系統中乙個排序的資料結構,以協助快速查詢 更新資料庫表中資料。就像我們以前用的新華字典的目錄一樣,能幫助我們快速查詢到某乙個字。二 索引的分類 分類角度索引名稱 資料結構b 樹,hash索引,r tree等 儲存層面聚簇索引,非聚簇索引 邏輯層面主鍵索引,...

MySQL MySQL神器之索引

索引是對資料庫表中一列或多列的值進行排序的一種結構,使用索引可快速訪問資料庫表中的特定資訊。如果想按特定職員的姓來查詢他或她,則與在表中搜尋所有的行相比,索引有助於更快地獲取資訊。索引的乙個主要目的就是加快檢索表中資料,亦即能協助資訊搜尋者盡快的找到符合限制條件的記錄id的輔助資料結構。在 mysq...