2023-08-11 09:29:48來源:dbaplus社群
索引在數(shù)據(jù)庫中非常重要,它可以加快查詢速度并提高數(shù)據(jù)庫性能。對于經(jīng)常被用作查詢條件的字段,添加索引可以顯著改善查詢效率。然而,索引的創(chuàng)建和維護需要考慮多個因素,包括數(shù)據(jù)量、查詢頻率、更新頻率等。
sql_helper工具是一個開源項目,它提供命令行模式和Web端接口兩種方式使用,其主要功能是自動判斷條件字段是否需要增加索引,適用于MySQL5.7/8.0和MariaDB數(shù)據(jù)庫,旨在幫助開發(fā)人員優(yōu)化數(shù)據(jù)庫查詢性能。通過分析SQL語句,該工具可以檢測出哪些條件字段可以考慮添加索引來提高查詢效率。
【資料圖】
第一步:通過SQL語法解析器,提煉出表名,別名,關(guān)聯(lián)字段名,條件字段名,排序字段名,分組字段名。
第二步:檢查是否有where條件,如沒有則給出提示。
第三步:檢測到a join b on a.id = b.id(關(guān)聯(lián)查詢時),通過查詢表結(jié)構(gòu),檢查關(guān)聯(lián)字段是否有索引,如沒有給出創(chuàng)建索引提示。
第四步:通過調(diào)用Explain執(zhí)行計劃,如果type值是ALL,或者rows大于1000,檢查該表(如有別名,找到其對應(yīng)的原始表名)和where條件字段的數(shù)據(jù)分布,工具默認(rèn)會采樣10萬條數(shù)據(jù)作為樣本,檢查Cardinality基數(shù),例如sex性別字段,有男女兩個值,如果占比超過半數(shù)(50%),則不建議對該字段創(chuàng)建索引。
第五步:檢查group by和order by字段(同樣的算法),之后與where條件字段合并,組合成聯(lián)合索引。
第六步:檢查這些字段之前是否創(chuàng)建過索引,如果沒有給予提示創(chuàng)建,如果之前就有索引,則不提示。
需要注意的是:sql_helper工具假定你的SQL語句條件表達(dá)式都為and的前提下,提示創(chuàng)建聯(lián)合索引。如果是or,SQL解析器解析起來會有些困難(SQL靈活多變,且不固定,無法用通用的算法組合字段)。
例如where c1 = 1 or c2 = 2
工具會提示(c1,c2)創(chuàng)建一個聯(lián)合索引,但實際上應(yīng)該單獨對c1和c2創(chuàng)建一個獨立索引。
即select ... from t where c1 = 1
union all
select ... from t where c2 = 2
命令行方式使用
shell> chmod 755 sql_helpershell> ./sql_helper -f test.yaml -q "select * from sbtest1 limit 1;"
注:test.yaml為MySQL配置文件。--sample參數(shù):默認(rèn)采樣10萬條數(shù)據(jù)(你可以在從庫上獲取樣本數(shù)據(jù)),根據(jù)你的實際情況,適當(dāng)增加采樣數(shù)據(jù),比如100-1000萬行,這樣工具會更精準(zhǔn)的判斷是否添加索引。
僅支持SELECT查詢(主要針對慢日志里的SQL)。
圖片
請注意,自動判斷是否增加索引只是一個輔助功能,最終的決策還應(yīng)該根據(jù)具體的業(yè)務(wù)需求以及對數(shù)據(jù)庫性能優(yōu)化的考慮來進行。此外,索引的創(chuàng)建和維護需要謹(jǐn)慎操作,需要考慮數(shù)據(jù)量、查詢頻率、更新頻率等因素,避免對數(shù)據(jù)庫性能產(chǎn)生負(fù)面影響。
工具適用于Centos7系統(tǒng)。關(guān)鍵詞:
sql_helper工具簡介索引在數(shù)據(jù)庫中非常重要,它可以加快查詢速度并提高
08月10日,德明利被深股通減持5 87萬股,最新持股量為37 11萬股,占公
香城體育中心公共區(qū)域的籃球場,香城體育中心小朋友在羽毛球館訓(xùn)練,猛
將首都從爪哇島上的雅加達(dá)遷往加里曼島上的努桑塔拉,印尼總統(tǒng)佐科最近
文章稱,面對數(shù)字經(jīng)濟帶來的機遇和挑戰(zhàn),資本市場各方勇立潮頭,積極開
1、1、您的設(shè)置是正確無誤的。360版的EASTNOD32都是這么個設(shè)置的。網(wǎng)絡(luò)
0471房產(chǎn)來為大家解答以上的問題。謝瑤環(huán)故事簡介,歷史上的謝瑤環(huán)簡介
美國百年歷史小鎮(zhèn)被毀,夏威夷山火已致36死:格隆匯8月10日|8月9日,
中新網(wǎng)日喀則8月10日電題:西藏日喀則扎西吉彩:讓非遺“特技”在新時
8月9日,國家游泳中心里充滿了小朋友們的歡笑聲,“關(guān)愛成長點亮希望”
8月10日,據(jù)彭博社今日報道稱,證監(jiān)會計劃于本周五,召集部分房企和金
快科技8月10日消息,今天,vivo官方宣布,新款平板vivoPadAir將在8月14
由于不斷的進步和不斷變化的可能性,技術(shù)已融入我們的日常生活。無論是
LibreOffice與OpenOffice是兩個流行的微軟辦公套件的開源替代品。如果
如果用一個詞來形容當(dāng)下這樣一個時代的話,新技術(shù)抵達(dá)臨界點,新商業(yè)范