1. 程式人生 > >【踩坑】MySQL時間索引失效

【踩坑】MySQL時間索引失效

專案中查時間資料段資料時,發現查詢時間很長,RDS查了一下執行計劃:

各列解析說明:

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

select_type:

1、SIMPLE表示不包含子查詢和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:

表示使用哪個索引

rows:

表示影響的行數

extra:

表示查詢帥選的型別,比如使用了where條件,索引條件,或者排序,或者臨時表空間


瞭解到的資料:

當表的索引被查詢時,會使用最好的索引,除非優化器使用全表掃描更有效。
優化器優化成全表掃描取決與使用最好索引查出來的資料是否超過表的30%的資料。
優化器更加複雜,其估計基於其他因素,列入表的大小,行數和I/O塊的大小。

發現原因:

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

解決:

時間段的範圍可以通過唯一鍵如訂單號查詢,因為訂單號可以區分時間,並且列基數=1

增加其他能進一步查詢篩選的條件,如姓名、手機號碼等欄位

------------------------------------------------------

------------------------------------------------------

我的個人域名

期望和大家一起學習,共同進步,共勉,O(∩_∩)O謝謝

歡迎交流問題,可加個人QQ 469580884

或者,加我的群號 751925591,一起探討交流問題

不講虛的,只做實幹家

Talk is cheap,show me the code

相關推薦

MySQL時間索引失效

專案中查時間資料段資料時,發現查詢時間很長,RDS查了一下執行計劃: 各列解析說明: id:表示執行的順序,id的值相同時,執行順序是從上到下,id的值不同時,id的值越大,優先順序越高,越先執行 select_type: 1、SIMPLE表示不包含子查詢和un

360安全瀏覽器“極速模式”和“兼容模式”,套路還是bug?

html 一個 另一個 地址 不生效 bug rom 論壇 val 分享踩坑點: 項目中需要兼容360安全瀏覽器,大家當然都希望用極速模式打開網站,但是發現總是被兼容模式打開 網址類似 aa.xx.dd.com 網上找了很多地方,有以下兩種方法 1.<m

angularJS 1.X版本中 ng-bind 指令多空格展示

ext 數據庫查詢 sci 接收 可能 color 最終 數據 目的 做項目的時候遇到的問題 1、問題描述   用戶在表單某個值輸入多個空格,例如:A B,保存至服務器   在列表查詢頁面中使用bg-bind的指令單向綁定,結果展示位A B,連續的空格被替換

ELK6.0已取消filebeat配置document_type

document_type elk logstash filebeat 一、起因 ?在使用ELK5.5的時候,如果遇到需要在同一臺機器上收集不同類型的日誌,比如:同時收集一臺機器上的java log和nginx log!而又需要分別存儲到不同索引的時候,我們會在filebeat的prospec

阿里雲ECS清除隱藏的挖礦程式

問題描述: 一臺阿里雲伺服器,收到連續告警CPU使用量已經大於95%。但這臺機器上面使用中的業務只有一個不常使用的MySQL,其他就沒有了,正常情況下CPU是不可能達到這麼高的。檢視告警資訊,發現有被植入挖礦程式,可疑程式檔案路徑為 /usr/lib/libiacpkmn.so.3 排查過程

為base64編碼的圖片生成截圖不顯示

問題 在effevo中設定個人頭像時,會有無法顯示的情況,還不穩定重現,終於抓到問題原因,下面分享下解決方法 解決方法 先看下原始寫法 var imgBase64='data:image/png;base64,iVBORw0KGgoAAAANSU

SpingMVC靜態資源無法訪問問題解決

看了網上很多解決方案都沒有成功 最後按自己的方案解決了 之前用 <mvc:default-servlet-handler/> 之前用這個配置不成功 改用resouces配置 在sping-web.xml 檔案下配置如下屬性  <mvc:res

mysql 時間索引失效

專案中查詢時間斷的資料發現查詢時間很長。懷疑沒有走時間的索引,於是explain一下 EXPLAIN select * from t_order where created_at>'2015-01-01 00:00:00' and created_at<'201

Android 使用 Jenkins 實現自動化打包流程&

引言 每個Android開發應該都有經歷過正在碼程式碼的時候突然被打斷要求打個啥啥環境啥啥配置的安裝包,然後就得暫存程式碼、切換分支、更改配置、等待build、balabala……往大了說就是浪費時間消耗員工價值對公司的不負責(胡扯),往小了說就是這TMD真的

報錯 non-static method xxx() cannot be referenced from a static context

bye not ont ODB 原因 con cannot ood ren 今天測試代碼時遇到 Error:(6, 55) java: non-static method sayGoodbye() cannot be referenced from a static

聯合主鍵情況下,JPA非主鍵設定自動增長無效

開發十年,就只剩下這套架構體系了! >>>   

京東賬戶——Mysql/PHP/Ajax爬之頁頭頁尾加載

type () str 頭文件 環境 ade div sql 引入 一、引言 實現京東的賬戶項目,有一個小功能,頁頭頁尾加載。要用到的是Apach環境,Mysql、PHP以及Ajax。 二、實現 原理: 用php文件分別寫一個的頁頭和一個頁尾,放在前後兩個div裏。

MySQL中,字符串和數值的比較

【坑】 mysql中 字符串和數值的比較 官方文檔:https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html原文:Comparison operations result in a value of 1 (TRUE), 0 (F

MySQLMySQL索引

約束 記錄 col 因此 訪問 除了 color 要求 rst 索引是存放在模式中的一個數據庫對象,雖然索引總是從屬於數據表,但它也和數據表一樣屬於數據庫對象。創建索引的唯一作用就是加速對表的查詢,索引通過使用快速路徑訪問方法來快速定位數據,從而減少了磁盤的I/O。 My

常見USB調試安裝失敗(Installation failed with message INSTALL_CANCELED_BY_USER)

mes 需要 現在 com 錯誤 .cn www all 問題: 【參考】http://www.cnblogs.com/liushilin/p/6553918.html 問題:在USB安裝調試(小米手機),出現如下錯誤 解決:1.小米手機解決辦法見參考。登錄小米賬號

原創MySQL(Innodb)索引的原理

day 希望 默認 數據位 依然 htm 排序 src 整體 引言 回想四年前,我在學習mysql的索引這塊的時候,老師在講索引的時候,是像下面這麽說的 索引就像一本書的目錄。而當用戶通過索引查找數據時,就好比用戶通過目錄查詢某章節的某個知識點。這樣就幫助用戶有效地提高了

+實踐elementui 中關於tab標籤echart width100%顯示不完全的問題

轉載:https://blog.csdn.net/izengjing/article/details/83539426   問題描述 關於elementui 中tab標籤echart顯示不完全的問題, 在通過tab顯示echart的時候,容器寬度width:

docker 部署pmm與mysql監控

docker 部署pmm與mysql監控 一、背景 二、步驟 1.下載PMM Server Docker映象 #版本可自選 docker create -v /opt/prometheus/data

Win10 MySQL安裝

1. MySQL安裝 1.1 在MySQL官網 下載 Windows 版本的 MySQL 安裝包 1.2 下載完後解壓,將 zip 包解壓到你想安裝的目錄,我將解壓後的資料夾放在 D:\MySQL下。 1.3 配置環境變數: 進入 計

遠端連線 MySQL 失敗

  問題描述   遠端連線 MySQL 伺服器失敗   報以下錯誤   host 192.168.23.1 is not allowed to connect to mysql server      解決方案    在伺服器端開啟 MySQL 伺服器進行許可