最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于mysql?left?join?查詢慢時間長的踩坑總結(jié)

 更新時間:2022年09月26日 11:29:21   作者:Haocaibo  
這篇文章主要介紹了關(guān)于mysql?left?join?查詢慢時間長的踩坑總結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

問題背景

兩張表一張是用戶表a(主鍵是int類型),一張是用戶具體信息表b(用戶表id字段是varchar類型)。

因?yàn)橐@示用戶及用戶信息,所以需要關(guān)聯(lián)查詢,但發(fā)現(xiàn)left join后查詢緩慢,耗時太長。用戶表數(shù)據(jù)2萬左右。

問題分析及處理

1、EXPLAIN 命令對 SELECT 語句進(jìn)行分析

type 字段提供了判斷查詢是否高效的重要依據(jù)依據(jù). 通過 type 字段, 我們判斷此次查詢是 全表掃描 還是 索引掃描 等.

ALL: 表示全表掃描, 這個類型的查詢是性能最差的查詢之一.

通常來說, 我們的查詢不應(yīng)該出現(xiàn) ALL 類型的查詢, 因?yàn)檫@樣的查詢在數(shù)據(jù)量大的情況下, 對數(shù)據(jù)庫的性能是巨大的災(zāi)難. 如一個查詢是 ALL 類型查詢, 那么一般來說可以對相應(yīng)的字段添加索引來避免.

2、新增索引

因?yàn)榘l(fā)現(xiàn)表b字段之前并沒有建索引。

alter table a add index idx_mbrID (mbrID);

再次Explain分析

發(fā)現(xiàn)type變?yōu)榱藃ef,根據(jù)不同的 type 類型的性能關(guān)系(

ALL < index < range ~ index_merge < ref < eq_ref < const < system

)比較后感覺可以了,于是執(zhí)行查詢。

3、修改索引字段類型一致

執(zhí)行查詢后發(fā)現(xiàn)執(zhí)行速度并未優(yōu)化,仔細(xì)看之前同事設(shè)計的表,發(fā)現(xiàn)索引類型字段不一致,于是修改為varchar 為int后再次查詢發(fā)現(xiàn)查詢速度明顯提升。

即使之前java代碼里面寫的string,數(shù)據(jù)庫改為int目前測試可正常使用

渣渣總結(jié)

解決完問題后,翻起了開發(fā)手冊,發(fā)現(xiàn)索引規(guī)約明確強(qiáng)制join時數(shù)據(jù)類型必須一致,被關(guān)聯(lián)字段必須有索引?。?!

關(guān)于Explain用法參考

http://m.fzitv.net/article/167406.htm

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • MySQL性能優(yōu)化之table_cache配置參數(shù)淺析

    MySQL性能優(yōu)化之table_cache配置參數(shù)淺析

    這篇文章主要介紹了MySQL性能優(yōu)化之table_cache配置參數(shù)淺析,本文介紹了它的緩存機(jī)制、參數(shù)優(yōu)化及清空緩存的命令等,需要的朋友可以參考下
    2014-07-07
  • MySQL索引查詢的具體使用

    MySQL索引查詢的具體使用

    本文主要介紹了MySQL索引查詢的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • Navicat如何通過ssh連接mysql

    Navicat如何通過ssh連接mysql

    文章介紹了通過SSH連接MySQL數(shù)據(jù)庫的方法,強(qiáng)調(diào)了確保MySQL默認(rèn)端口3306沒有被防火墻阻攔,以及在Ubuntu系統(tǒng)中默認(rèn)root的SSH是禁止的,應(yīng)使用其他賬戶登錄
    2025-02-02
  • MySQL窗口函數(shù) over(partition by)的用法

    MySQL窗口函數(shù) over(partition by)的用法

    本文主要介紹了MySQL窗口函數(shù) over(partition by)的用法, partition by相比較于group by,能夠在保留全部數(shù)據(jù)的基礎(chǔ)上,只對其中某些字段做分組排序,下面就來介紹一下具體用法,感興趣的可以了解一下
    2024-02-02
  • mysql如何查詢兩個日期之間最大的連續(xù)登錄天數(shù)

    mysql如何查詢兩個日期之間最大的連續(xù)登錄天數(shù)

    在現(xiàn)在的很多網(wǎng)站中都有這樣一個功能。記錄用戶的連續(xù)登陸天數(shù),所謂的連續(xù)在線是指相鄰兩天都登錄過,不一定一直在線,但是只要有過登錄即可。這篇文章主要介紹的是利用sql語句如何查詢在兩個日期之間最大的連續(xù)登錄天數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10
  • 一文詳解MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Control)

    一文詳解MYSQL的多版本并發(fā)控制MVCC(Multi-Version Concurrency Co

    MVCC是一種用于數(shù)據(jù)庫管理系統(tǒng)的并發(fā)控制技術(shù),允許多個事務(wù)同時訪問數(shù)據(jù)庫,而不會導(dǎo)致讀寫沖突,本文就詳細(xì)的介紹了MVCC的具體用法,具有一定的參考價值,感興趣的可以了解一下
    2023-10-10
  • 解析Mysql多表查詢的實(shí)現(xiàn)

    解析Mysql多表查詢的實(shí)現(xiàn)

    本篇文章是對Mysql多表查詢的實(shí)現(xiàn)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL中建表時可空(NULL)和非空(NOT NULL)的用法詳解

    MySQL中建表時可空(NULL)和非空(NOT NULL)的用法詳解

    這篇文章主要介紹了MySQL中建表時可空(NULL)和非空(NOT NULL)的用法詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 淺談MySQL在cmd和python下的常用操作

    淺談MySQL在cmd和python下的常用操作

    下面小編就為大家?guī)硪黄獪\談MySQL在cmd和python下的常用操作。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • 服務(wù)器不支持 MySql 數(shù)據(jù)庫的解決方法

    服務(wù)器不支持 MySql 數(shù)據(jù)庫的解決方法

    出現(xiàn)問題:報錯“服務(wù)器不支持 MySql 數(shù)據(jù)庫”,改函數(shù)function_exists('mysql_connect')返回 false
    2013-03-03

最新評論

淮滨县| 宿松县| 秭归县| 崇礼县| 鲁山县| 盐亭县| 育儿| 岳西县| 陆良县| 阳西县| 祁连县| 威信县| 丹江口市| 驻马店市| 哈尔滨市| 庆城县| 贺州市| 南康市| 六安市| 大方县| 普安县| 平山县| 临夏县| 江山市| 新和县| 林甸县| 恭城| 宣武区| 海口市| 奇台县| 临西县| 泽普县| 报价| 泸溪县| 大足县| 永济市| 湟源县| 昌平区| 淳安县| 平定县| 贵德县|