網站首頁 編程語言 正文
說明:SQL調優中重要的一個環節是建立索引,其中有一條是字段值過長字段應該建立前綴索引,即根據字段值的前幾位建立索引,像數據庫中的密碼字段、UUID字段。
因為其隨機性,其實根據前幾位就可以鎖定某一條記錄了。前綴索引可以用盡可能少的代價得到目的,畢竟索引也是需要內存和維護成本的。本文介紹如何建立一個前綴索引。
索引的長度怎么選?
建立前綴索引前,我們需要知道選該字段值的前幾位建立索引,要求是根據前綴的這部分就可以鎖定某一條數據。比如,我下面的這張表,有1000萬條記錄,我想對password字段建立前綴索引;
可以敲下面這個SQL,找出前綴索引的長度;
# password字段值前10位去重后的數量 / 所有記錄數
select count(distinct left(password,10))/count(*) from user;
這里是計算出password字段前幾位字段值,并且去重后的數量,如果等于1,說明password字段的前幾位互不相同,說明根據這個長度來建立前綴索引就夠了。
(前9位,不等于1,還不行)
(前10位,等于1,說明10位足夠區分)
這個過程需要一定時間,但是總會找到的。
建立前綴索引
建立前綴索引之前,先執行一條查詢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));
執行完成;
查看效果
再執行前面的那條查詢SQL,看下效果,執行時間128ms,速度顯著提升;
看下執行計劃,可以看到走了索引;
到這,給數據庫某字段建立前綴索引就完成了,重點是獲取前綴索引的長度。
原文鏈接:https://blog.csdn.net/qq_42108331/article/details/134617149
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-11-14 關于C++解決內存泄漏問題的心得
- 2022-02-19 C語言計算Robots機器人行走路線_C 語言
- 2022-10-11 React -配置文件中需要使用組件中異步請求到的數據
- 2022-10-29 STDC分割網絡:onnx推理
- 2022-12-04 Python學習之字典和集合的使用詳解_python
- 2022-08-17 R語言繪制corrplot相關熱圖分析美化示例及詳細圖解_R語言
- 2022-02-18 cv2.error: OpenCV(4.5.4-dev) :-1: error: (-5:Bad a
- 2022-05-22 iOS實現背景滑動效果_IOS
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支