網(wǎng)站首頁 編程語言 正文
說明: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
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2022-05-01 python3中apply函數(shù)和lambda函數(shù)的使用詳解_python
- 2022-05-22 Shell腳本一鍵安裝Nginx服務(wù)自定義Nginx版本_linux shell
- 2022-11-30 Docker容器數(shù)據(jù)卷的使用教程_docker
- 2022-09-03 Python?pandas?DataFrame基礎(chǔ)運算及空值填充詳解_python
- 2022-12-15 conda創(chuàng)建環(huán)境過程出現(xiàn)"Solving?environment:?failed"報錯的詳細解決方
- 2022-04-18 C++中的命名空間詳細介紹_C 語言
- 2022-07-11 Mongodb分片技術(shù)理論
- 2022-12-10 C++如何將vector數(shù)字寫入到txt文件中_C 語言
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支