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

一文簡單了解MySQL前綴索引

 更新時間:2022年04月02日 10:21:46   作者:mashen  
MySQL是支持前綴索引的,也就是說你可以定義字符串的一部分作為索引,下面這篇文章主要給大家介紹了關于MySQL前綴索引的相關資料,需要的朋友可以參考下

當要索引的列字符很多時 索引則會很大且變慢

( 可以只索引列開始的部分字符串 節(jié)約索引空間 從而提高索引效率 )

原則: 降低重復的索引值

例如現(xiàn)在有一個地區(qū)表

areagdpcode
chinaShanghai100aaa
chinaDalian200bbb
usaNewYork300ccc
chinaFuxin400ddd
chinaBeijing500eee

發(fā)現(xiàn) area 字段很多都是以 china 開頭的

那么如果以前1-5位字符做前綴索引就會出現(xiàn)大量索引值重復的情況

索引值重復性越低 查詢效率也就越高

前綴索引測試

// 創(chuàng)建一個測試表
CREATE TABLE `x_test` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `x_name` varchar(255) NOT NULL,
  `x_time` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4145025 DEFAULT CHARSET=utf8mb4

// 添加200萬條測試數(shù)據(jù)
INSERT INTO x_test(x_name,x_time) SELECT CONCAT(rand()*3300102,x_name),x_time FROM x_test WHERE id < 30000;

200萬 測試數(shù)據(jù)

  • 在無任何索引的情況下隨便查詢一條
    SELECT * FROM x_test WHERE x_name = '1892008.205824857823401.800099203178258.8904820949682635656.62526521254';查詢時間:2.253s

  • 添加前綴索引 ( 以第一位字符創(chuàng)建前綴索引 )
    alter table x_test add index(x_name(1))再次查詢相同sql語句
    SELECT * FROM x_test WHERE x_name = '1892008.205824857823401.800099203178258.8904820949682635656.62526521254';查詢時間:3.291s
    當使用第一位字符創(chuàng)建前綴索引后 貌似查詢的時間更長了
    因為只第一位字符而言索引值的重讀性太大了
    200萬條數(shù)據(jù)全以數(shù)字開頭那么平均20萬條的數(shù)據(jù)都是相同的索引值

  • 重新建立前綴索引 這次以前4位字符來創(chuàng)建
    alter table x_test add index(x_name(4));再次查詢相同sql語句
    SELECT * FROM x_test WHERE x_name = '1892008.205824857823401.800099203178258.8904820949682635656.62526521254';查詢時間:0.703s
    這次以前4位創(chuàng)建索引 大大減少了索引值的重復性 查詢速度從3秒提升到0.7秒

  • 200萬條數(shù)據(jù)都以數(shù)字開頭 而0-9排列組合7位則可達到千萬種組合
    也就是以前7位來做索引則不會出現(xiàn)重復索引值的情況了
    alter table x_test add index(x_name(7));再次查詢相同sql語句
    SELECT * FROM x_test WHERE x_name = '1892008.205824857823401.800099203178258.8904820949682635656.62526521254';查詢時間:0.014s ( 首次執(zhí)行無緩存狀態(tài)下 )

補充:使用前綴索引的執(zhí)行過程

  1. 從index2的索引樹上,找到滿足索引值是“zhangs”的記錄,找到第一個是ID1;
  2. 到主鍵索引樹上查到ID1這一行,判斷email的值滿不滿足where后的條件,不滿足這一行丟棄。
  3. 繼續(xù)回到index2這個索引樹上查下一條記錄,發(fā)現(xiàn)如果還是"zhangs",取出ID2,再回到ID2索引樹上進行判斷,如果值正確,將結果返回結果集中。
  4. 重復執(zhí)行以上流程,直到從index2索引樹上取出的數(shù)據(jù)不是“zhangs”,循環(huán)結束。

通過以上執(zhí)行流程的分析你就可以知道,前綴索引會導致掃描的行數(shù)變多,這和你所指定前綴的長度有關?;蛟Semail(7)中的區(qū)分度就比email(6)高,就不會掃描那么多行。

也即是說使用前綴索引,定義好長度,就可以節(jié)省空間又不用額外增加太多的查詢成本

那怎樣定義前綴索引長度比較好呢?

實際上,建立索引時關注的是區(qū)分度,區(qū)分度越高,越能體現(xiàn)索引的價值和他的優(yōu)勢。因此我們可以通過統(tǒng)計索引上有不同的值來判斷要使用多長的前綴。

select count(distinct email) as L from User;

MySQL 5.7 參考手冊 - 前綴索引

總結

到此這篇關于MySQL前綴索引的文章就介紹到這了,更多相關MySQL前綴索引內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • MySQL中空值Null和空字符‘‘的具體使用

    MySQL中空值Null和空字符‘‘的具體使用

    本文主要介紹了MySQL中空值Null和空字符''的具體使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • mysql5.7安裝及配置教程

    mysql5.7安裝及配置教程

    這篇文章主要為大家詳細介紹了mysql5.7安裝及配置教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 利用rpm安裝mysql 5.6版本詳解

    利用rpm安裝mysql 5.6版本詳解

    眾所周知MySQL在很多領域都被廣泛的使用,尤其是很多互聯(lián)網(wǎng)企業(yè),諸如騰訊,阿里等等。那么本文將主要介紹如何通過rpm方式來安裝Mysql,這是比較簡單的一種安裝方式,文中介紹的很詳細,相信對于大家安裝mysql具有一定的參考借鑒價值,下面來一起看看吧。
    2016-11-11
  • MySql5.7.21安裝要點記錄筆記

    MySql5.7.21安裝要點記錄筆記

    這篇文章主要介紹了mysql5.7.21安裝要點記錄筆記,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2018-02-02
  • mysql查看鎖表及殺進程問題

    mysql查看鎖表及殺進程問題

    這篇文章主要介紹了mysql查看鎖表及殺進程問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 一文帶你分清MySQL回表查詢與索引覆蓋

    一文帶你分清MySQL回表查詢與索引覆蓋

    這篇文章主要給大家詳細介紹如何分清MySQL回表查詢與索引覆蓋,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-07-07
  • MySQL 文本文件的導入導出數(shù)據(jù)的方法

    MySQL 文本文件的導入導出數(shù)據(jù)的方法

    但有時為了更快速地插入大批量數(shù)據(jù)或交換數(shù)據(jù),需要從文本中導入數(shù)據(jù)或?qū)С鰯?shù)據(jù)到文本。下面的具體的方法大家可以參考下。多測試。
    2009-11-11
  • 淺談MySQL排序原理與案例分析

    淺談MySQL排序原理與案例分析

    這篇文章主要介紹了淺談MySQL排序原理與案例分析的相關資料,需要的朋友可以參考下
    2016-03-03
  • Mysql中xtrabackup備份的實現(xiàn)

    Mysql中xtrabackup備份的實現(xiàn)

    Xtrabackup是Percona團隊開發(fā)的用于MySQL數(shù)據(jù)庫物理熱備份的開源備份工具,本文就來介紹一下Mysql中xtrabackup備份的實現(xiàn),就有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • MySQL調(diào)優(yōu)之SQL查詢深度分頁問題

    MySQL調(diào)優(yōu)之SQL查詢深度分頁問題

    本文主要介紹了MySQL調(diào)優(yōu)之SQL查詢深度分頁問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-03-03

最新評論