国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇

這篇具有很好參考價值的文章主要介紹了【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??專欄【MySQL】
??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。
??音樂分享【The Right Path】
??歡迎并且感謝大家指出小吉的問題


【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??索引的使用

?驗證索引效率

??沒有創(chuàng)建索引時,執(zhí)行SQL語句,查看SQL的耗時
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??創(chuàng)建索引后,執(zhí)行SQL語句,查看SQL的耗時

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
比較發(fā)現(xiàn),時間減少了

??細節(jié)

創(chuàng)建索引相當于在構(gòu)建B+Tree
所以創(chuàng)建索引也需要花時間

?最左前綴法則

最左前綴法則就是查詢從索引的最左列開始,并且不跳過索引中的列
如果索引了多列(聯(lián)合索引),要遵循最左前綴法則

??????查詢索引的時候,必須包含最左邊的一列,否則不滿足最左前綴法則,索引失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

查詢的時候,如果
跳過了最左邊的列,索引全部失效
跳過了其中的某一列(不是最左邊的),索引部分失效

?范圍查詢

聯(lián)合查詢在出現(xiàn)范圍查詢(>,<)時,范圍查詢右側(cè)的列索引失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

在業(yè)務(wù)允許的情況下,盡量使用>=這樣子的查詢

?索引失效的情況

??????在索引列上使用運算操作(例如substr函數(shù)),索引將失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??????字符串類型的字段使用時,不加引號,索引將失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??????模糊查詢
如果僅僅是尾部模糊匹配,索引不會失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

如果是頭部模糊匹配,索引失效
如果在查詢大數(shù)據(jù)的情況下,一定要規(guī)避這種情況
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
??????or連接的條件
使用or分割開的條件,如果or前的條件中列有索引,而后面的列沒有索引,那么涉及的索引不會被用到
如下面的例子,由于age沒有索引,所以即使id,phone有索引,索引也會失效
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

為了解決這個問題,我們要針對age建立索引
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
??????數(shù)據(jù)分布影響
如果MySQL 的優(yōu)化器 認為使用索引比全表更慢,那么不使用索引
(是MySQL自己進行評估認為的結(jié)果)
比如進行查詢一個數(shù)據(jù)
用戶:查詢什么什么東西
MySQL:找一個更快的方式,比如使用全表掃描比索引快,那么采用全表掃描了
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

使不使用索引,是由表中的數(shù)據(jù)決定的,而不是固定的

??SQL提示

SQL提示是指在使用SQL語言編寫數(shù)據(jù)庫查詢或操作時,數(shù)據(jù)庫管理系統(tǒng)(如MySQL、Oracle、SQL Server等)提供的輔助功能。這些提示可以幫助用戶更快地完成SQL語句,減少錯誤,并提供有關(guān)數(shù)據(jù)庫結(jié)構(gòu)和數(shù)據(jù)的相關(guān)信息。
簡單來說,就是在SQL語句里面添加一些人為的提示來達到優(yōu)化操作的目的

??告訴數(shù)據(jù)庫使用什么索引(use)

這個是建議MySQL使用這個索引,但是是否要使用,MySQL還是要自己去權(quán)衡一下

explain select * from 表名 use index(索引名) where 條件;

??告訴數(shù)據(jù)庫不使用什么索引(ignore)

explain select * from 表名 use index(索引名) where 條件;

??告訴數(shù)據(jù)庫必須使用什么索引(force)

explain select * from 表名 force index(索引名) where 條件;

??????前綴索引

當字段類型為字符串(varchar,text)時,有時候需要索引很長的字符串,會使索引變得很大,查詢時,浪費大量的磁盤IO,影響查詢效率
這個時候我們就可以使用前綴索引,僅對字符串的一部分前綴,建立索引,這樣子可以大大節(jié)約索引空間,從而提高索引效率

create index 索引名 on 表名(字段名(前綴長度n));

??前綴長度n

可以根據(jù)索引的選擇性來使用,而選擇性是指不重復的索引值(基數(shù))和數(shù)據(jù)表的記錄總數(shù)的比值,索引選擇性越高,查詢效率越高
唯一索引的選擇性是1,是最好的索引選擇性,性能也是最好的

??獲取索引選擇性的方法

可以使用下面的公式來實現(xiàn)

select count(distant 字段名)/count(*) from 表名;

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
可以分步計算,康康過程
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
?如果是針對前綴索引進行計算,那么公式里面要加上substring

select count(distant substring(字段名,起始字母,截取的字母個數(shù)))/count(*) from 表名;

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
可以通過多次計算,找到最合適的前綴長度

??查詢過程
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??覆蓋索引

MySQL的覆蓋索引是一種特殊的索引類型,它包含了查詢所需的所有列,從而使得查詢可以直接通過索引本身來完成,而無需再去訪問實際的數(shù)據(jù)行。通常,數(shù)據(jù)庫查詢需要根據(jù)索引定位到相應(yīng)的數(shù)據(jù)行,然后再從數(shù)據(jù)行中獲取所需的列值。但是,使用覆蓋索引,MySQL可以在索引中找到所有需要的列,避免了額外的數(shù)據(jù)行查找盡量減少select *的使用,從而提高了查詢性能。

??單列索引和聯(lián)合索引的選擇問題

??單列索引:一個索引僅僅包含一個列
??聯(lián)合索引:一個索引包含多個列

?單列索引

使用單列索引的時候,發(fā)現(xiàn)MySQL優(yōu)化器會選擇其中一個查詢效率比較高的一個索引
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

?聯(lián)合索引

使用聯(lián)合索引的時候,MySQL優(yōu)化器會選擇聯(lián)合索引

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

多條件聯(lián)合查詢的時候,MySQL優(yōu)化器會評估哪個字段的索引效率更高,會選擇該字段完成本次查詢

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??索引設(shè)計原則

【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql
【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇,MySQL,數(shù)據(jù)庫,mysql

??如果大家有不明白的地方,或者文章有問題,歡迎大家在評論區(qū)討論,指正??文章來源地址http://www.zghlxwxcb.cn/news/detail-602903.html

到了這里,關(guān)于【從刪庫到跑路】MySQL數(shù)據(jù)庫的索引(二)——索引的使用和選擇的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【從刪庫到跑路】詳細講解MySQL的函數(shù)和約束作用

    【從刪庫到跑路】詳細講解MySQL的函數(shù)和約束作用

    ??專欄【MySQL】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【如愿】 大一同學小吉,歡迎并且感謝大家指出我的問題?? 是指一段可以直接被另一段程序調(diào)用的程序或代碼 ??字符串拼接函數(shù) ??把字符串全部變?yōu)樾???把字符串全部變?yōu)榇髮???字符串

    2024年02月09日
    瀏覽(25)
  • 【MySQL從刪庫到跑路 | 基礎(chǔ)第二篇】——談?wù)凷QL中的DML語句

    【MySQL從刪庫到跑路 | 基礎(chǔ)第二篇】——談?wù)凷QL中的DML語句

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【MySQL學習專欄】?? 本專欄旨在分享學習MySQL的一點學習心得,歡迎大家在評論區(qū)討論?? 前面我們已經(jīng)講解了SQL語句中的DDL語句。今天我們繼續(xù)來學習SQL的DML語句。

    2024年02月07日
    瀏覽(24)
  • 【從刪庫到跑路】MySQL系列——詳細講解SQL的DDL,DML,DQL,DCL語句

    【從刪庫到跑路】MySQL系列——詳細講解SQL的DDL,DML,DQL,DCL語句

    ??專欄【MySQL】 ??喜歡的詩句:更喜岷山千里雪 三軍過后盡開顏。 ??音樂分享【如愿】 大一同學小吉,歡迎并且感謝大家指出我的問題?? 內(nèi)容有點多,建議大家先看目錄。 建立在關(guān)系模型基礎(chǔ)上,由多張相互連接的二維表組成的數(shù)據(jù)庫 ??使用表存儲數(shù)據(jù),格式統(tǒng)一,

    2024年02月09日
    瀏覽(48)
  • 看完這篇都有DBA級別的MySQL備份經(jīng)驗了,再也不害怕刪庫跑路了

    ? ? ? ? 在做運維的路上,相信大家會跟數(shù)據(jù)庫經(jīng)常打交道吧,那么數(shù)據(jù)庫最重要的時候什么呢,那么肯定是備份了,這篇文章主要內(nèi)容是介紹了,MySQL的幾種常見的備份方式,主要是分為兩種,第一種是基于MySQL提供的工具來進行備份,還有一種是基于使用第三方工具來進行

    2024年02月05日
    瀏覽(19)
  • rm -rf 真是刪庫跑路的一把好手

    上回書說到《一個月黑風高的夜晚緊急完成gitlab服務(wù)器數(shù)據(jù)遷移》,因為數(shù)據(jù)遷移后原數(shù)據(jù)還是存在的,該分區(qū)硬盤快滿了,進而影響了原目錄下的日志存儲,既然數(shù)據(jù)已經(jīng)遷移到新的路徑了,那原來的庫直接刪掉就好了,往往就是這么不經(jīng)意間做了一個令人十分后怕的決定

    2024年02月05日
    瀏覽(24)
  • 微服務(wù)技術(shù)棧筆記從入門到跑路-SpringCloud+Gateway+Nacos+MQ+ES(保姆級)

    微服務(wù)技術(shù)棧筆記從入門到跑路-SpringCloud+Gateway+Nacos+MQ+ES(保姆級)

    SpringCloud和Dubbo是微服務(wù)方案的實現(xiàn) 微服務(wù)技術(shù)對比 SpringCloud 和SpringBoot版本兼容需要對應(yīng) (左側(cè)是SpringCloud的版本,右側(cè)SpringBoot版本。兩者版本需要一一對應(yīng),否者可能出現(xiàn)兼容性問題) (此筆記基于SpringCloud Hopxton.SR10和SpringBoot2.3.x進行記錄) 微服務(wù)需要根據(jù)業(yè)務(wù)模塊拆分

    2024年02月08日
    瀏覽(106)
  • 【MySQL 】MySQL 創(chuàng)建數(shù)據(jù)庫, MySQL 刪除數(shù)據(jù)庫,MySQL 選擇數(shù)據(jù)庫

    【MySQL 】MySQL 創(chuàng)建數(shù)據(jù)庫, MySQL 刪除數(shù)據(jù)庫,MySQL 選擇數(shù)據(jù)庫

    作者簡介: 辭七七,目前大一,正在學習C/C++,Java,Python等 作者主頁: 七七的個人主頁 文章收錄專欄: 七七的閑談 歡迎大家點贊 ?? 收藏 ? 加關(guān)注哦!???? 我們可以在登陸 MySQL 服務(wù)后,使用 create 命令創(chuàng)建數(shù)據(jù)庫,語法如下: 以下命令簡單的演示了創(chuàng)建數(shù)據(jù)庫的過程,

    2024年02月13日
    瀏覽(115)
  • MySQL數(shù)據(jù)庫:數(shù)據(jù)庫管理系統(tǒng)與安裝MySQL數(shù)據(jù)庫

    MySQL數(shù)據(jù)庫:數(shù)據(jù)庫管理系統(tǒng)與安裝MySQL數(shù)據(jù)庫

    目錄 一、理論 1.數(shù)據(jù)庫管理系統(tǒng) 2.關(guān)系型數(shù)據(jù)庫 3.數(shù)據(jù)庫 4.MySQL數(shù)據(jù)庫 5.MySQL部署 二、實驗 1.yum安裝MySQL 2.編譯安裝MySQL 3.配置MySQL數(shù)據(jù)庫的Tab補全? 三、問題 1.數(shù)據(jù)庫登錄報錯 2.數(shù)據(jù)庫密碼復雜度報錯 3.數(shù)據(jù)庫連接報錯 四、總結(jié) (1)概念 數(shù)據(jù)庫管理系統(tǒng)(Database Management

    2024年02月12日
    瀏覽(28)
  • 初識MySQL數(shù)據(jù)庫——“MySQL數(shù)據(jù)庫”

    初識MySQL數(shù)據(jù)庫——“MySQL數(shù)據(jù)庫”

    各位CSDN的uu們你們好呀,小雅蘭好久沒有更文啦,確實是心有余而力不足,最近學習的內(nèi)容太難了,這篇博客又是小雅蘭的新專欄啦,主要介紹的是一些MySQL數(shù)據(jù)庫的知識點,下面,讓我們進入初識MySQL數(shù)據(jù)庫的世界吧 為什么要使用數(shù)據(jù)庫 數(shù)據(jù)庫與數(shù)據(jù)庫管理系統(tǒng) MySQL介紹

    2024年02月06日
    瀏覽(18)
  • 【MySQL數(shù)據(jù)庫】MySQL數(shù)據(jù)庫管理

    【MySQL數(shù)據(jù)庫】MySQL數(shù)據(jù)庫管理

    Structure Query Language(結(jié)構(gòu)化查詢語言)簡稱SQL,它被美國國家標準局(ANSI)確定為關(guān)系型數(shù)據(jù)庫語言的美國標準,后被國際化標準組織(ISO)采納為關(guān)系數(shù)據(jù)庫語言的國際標準。數(shù)據(jù)庫管理系統(tǒng)可以通過SQL管理數(shù)據(jù)庫;定義和操作數(shù)據(jù),維護數(shù)據(jù)的完整性和安全性。 數(shù)據(jù):(data)

    2024年02月08日
    瀏覽(49)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包