欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql?in索引慢查詢優(yōu)化實現(xiàn)步驟解析

 更新時間:2023年05月12日 10:42:32   作者:刨紅薯的小羊竿爾  
這篇文章主要為大家介紹了mysql?in慢查詢優(yōu)化實現(xiàn)步驟的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

記一次mysql慢查詢優(yōu)化

生產環(huán)境待辦列表現(xiàn)場演示5~6s才加載出來結果;頓時,產品經理的臉掛不住了,作為多年經驗的老開發(fā),心想完犢子,臉啪啪滴。

不過,秉著多年的江湖經驗,遇事不慌,拍個照先。

第一步、分析SQL

 ***from event i 
 left join project p on i.project_id = p.project_code 
 left join dict d on i.type_id = d.id 
 left join record re on re.incident_id = i.id
 left join type it on it.id = i.type_id 
 where i.version_flag = 0 and i.flow_id in (大量條件)***

當flow_id in接入大量條件,sql直接變慢,由之前的80ms到5.8秒,另外此處,關聯(lián)表較多。

第二步、檢查索引,執(zhí)行explain

當我們檢查索引發(fā)現(xiàn)re.incident_id和i.flow_id并沒有走索引,so,大喜,問題找到了,建索引;然而執(zhí)行SQL,發(fā)現(xiàn)并卵!機智如我,直接打開explain,發(fā)現(xiàn)record的type為all,赤裸裸的沒走索引啊。

why?why?

第三步、檢查兩個關聯(lián)字段的字段類型、長度和字符類型是否一致

當比較字段類型和字段長度發(fā)現(xiàn)完全一致,短暫的郁悶之后,發(fā)現(xiàn)了新的線索——

event表的id的字符類型為:

image.png

record表的incident_id的字符類型為:

image.png

果斷統(tǒng)一使用utf8mb4與項目組保持統(tǒng)一;再次explain,耗時瞬間低至1秒之內,手工。

第四步、強制使用索引操作

mysql在一個表如果索引基數過小的情況下默認會走全文搜索,所以對于表業(yè)務量過大,但是索引字段基本上為同一數據或null的情況 還是需要在sql中寫死強制索引;在sql中使用強制索引解決辦法 left join 后添加 force index(alarm_id)——

image.png

第五步、IN通常是走索引的

只有當IN后面的數據在數據表中超過30% 的匹配時是全表掃描,不走索引,因此IN走不走索引和后面的數據量有關系。 in大量數據可以使用left join來處理。

以上就是mysql in慢查詢優(yōu)化的詳細內容,更多關于mysql in慢查詢優(yōu)化的資料請關注腳本之家其它相關文章!

相關文章

  • mysql數據庫操作_高手進階常用的sql命令語句大全

    mysql數據庫操作_高手進階常用的sql命令語句大全

    mysql數據庫操作sql命令語句大全:三表連表查詢、更新時批量替換字段部分字符、判斷某一張表是否存在、自動增長恢復從1開始、查詢重復記錄、更新時字段值等于原值加上一個字符串、更新某字段為隨機值、復制表數據到另一個表、創(chuàng)建表時拷貝其他表的數據和結構...
    2022-11-11
  • 數據庫SQL調優(yōu)的幾種方式匯總

    數據庫SQL調優(yōu)的幾種方式匯總

    在項目中,SQL的調優(yōu)對項目的性能來講至關重要,所有掌握常見的SQL調優(yōu)方式是必不可少的,下面這篇文章主要給大家介紹了關于數據庫SQL調優(yōu)的幾種方式,需要的朋友可以參考下
    2022-10-10
  • MySQL 普通索引和唯一索引的區(qū)別詳解

    MySQL 普通索引和唯一索引的區(qū)別詳解

    這篇文章主要介紹了MySQL 普通索引和唯一索引的區(qū)別詳解,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-03-03
  • deepin20.1系統(tǒng)安裝MySQL8.0.23(超詳細的MySQL8安裝教程)

    deepin20.1系統(tǒng)安裝MySQL8.0.23(超詳細的MySQL8安裝教程)

    這篇文章主要介紹了deepin20.1系統(tǒng)安裝MySQL8.0.23(最美國產Liunx系統(tǒng),最詳細的MySQL8安裝教程),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • php開啟mysqli擴展之后如何連接數據庫

    php開啟mysqli擴展之后如何連接數據庫

    Mysqli是php5之后才有的功能,沒有開啟擴展的朋友可以打開您的php.ini的配置文件;相對于mysql有很多新的特性和優(yōu)勢,需要了解的朋友可以參考下
    2012-12-12
  • mytop 使用介紹 mysql實時監(jiān)控工具

    mytop 使用介紹 mysql實時監(jiān)控工具

    mytop 是一個類似 Linux 下的 top 命令風格的 MySQL 監(jiān)控工具,可以監(jiān)控當前的連接用戶和正在執(zhí)行的命令
    2012-05-05
  • mysql備份表的幾種方法總結

    mysql備份表的幾種方法總結

    這篇文章主要介紹了mysql的備份表的幾種方法總結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-03-03
  • 超簡單的qps統(tǒng)計方法(推薦)

    超簡單的qps統(tǒng)計方法(推薦)

    下面小編就為大家?guī)硪黄唵蔚膓ps統(tǒng)計方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 淺析MySQL replace into 的用法

    淺析MySQL replace into 的用法

    在向表中插入數據的時候,經常遇到這樣的情況:1. 首先判斷數據是否存在; 2. 如果不存在,則插入;3.如果存在,則更新。
    2014-06-06
  • MySQL 表空間碎片的概念及相關問題解決

    MySQL 表空間碎片的概念及相關問題解決

    這篇文章主要介紹了MySQL 表空間碎片的概念及相關問題解決,幫助大家更好的理解和學習使用MySQL,感興趣的朋友可以了解下
    2021-05-05

最新評論