日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網(wǎng)站首頁 編程語言 正文

怎么給數(shù)據(jù)庫某個字段建立一個前綴索引

作者:何中應(yīng) 更新時間: 2023-12-10 編程語言

說明:SQL調(diào)優(yōu)中重要的一個環(huán)節(jié)是建立索引,其中有一條是字段值過長字段應(yīng)該建立前綴索引,即根據(jù)字段值的前幾位建立索引,像數(shù)據(jù)庫中的密碼字段、UUID字段。

因為其隨機性,其實根據(jù)前幾位就可以鎖定某一條記錄了。前綴索引可以用盡可能少的代價得到目的,畢竟索引也是需要內(nèi)存和維護成本的。本文介紹如何建立一個前綴索引。

索引的長度怎么選?

建立前綴索引前,我們需要知道選該字段值的前幾位建立索引,要求是根據(jù)前綴的這部分就可以鎖定某一條數(shù)據(jù)。比如,我下面的這張表,有1000萬條記錄,我想對password字段建立前綴索引;

在這里插入圖片描述

可以敲下面這個SQL,找出前綴索引的長度;

# password字段值前10位去重后的數(shù)量 / 所有記錄數(shù)
select count(distinct left(password,10))/count(*) from user;

這里是計算出password字段前幾位字段值,并且去重后的數(shù)量,如果等于1,說明password字段的前幾位互不相同,說明根據(jù)這個長度來建立前綴索引就夠了。

(前9位,不等于1,還不行)

在這里插入圖片描述

(前10位,等于1,說明10位足夠區(qū)分)

在這里插入圖片描述

這個過程需要一定時間,但是總會找到的。

建立前綴索引

建立前綴索引之前,先執(zhí)行一條查詢SQL,看需要多久。

select * from user where password = 'c81e728d9d4c2f636f067f89cc14862c';

22秒,足夠慢;

在這里插入圖片描述

敲下面的SQL,給password字段值的前10位建立索引,password_prefix_index是索引名,password(10)表示前10位

# 給user表中的password字段前10位建立索引
create index password_prefix_index on user(password(10));

執(zhí)行完成;

在這里插入圖片描述

查看效果

再執(zhí)行前面的那條查詢SQL,看下效果,執(zhí)行時間128ms,速度顯著提升;

在這里插入圖片描述

看下執(zhí)行計劃,可以看到走了索引;

在這里插入圖片描述

到這,給數(shù)據(jù)庫某字段建立前綴索引就完成了,重點是獲取前綴索引的長度。

在這里插入圖片描述

原文鏈接:https://blog.csdn.net/qq_42108331/article/details/134617149

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新