mysql 長字符串如何建立索引 前綴索引


因為業務的需求,難免要對比較長的字段進行匹配,如果不建立索引就會進行全表掃描,非常消耗時間。
但是為長字符串建立索引也非常消耗空間,性能也不高。
一般有兩種解決方案
1.為字段添加前綴索引
2.增加crc字段

以下為兩種方案的實現,以身份證為例

CREATE TABLE `people` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `car_id` varchar(18) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

前綴索引

一般身份證前幾位都是有規律的,使用前幾位粒度太小了,可以先把身份證號反轉然后存入。

--注意1:前綴索引只能適用於普通索引中,不能使用在unique中
--注意2:前綴索引只支持英文和數字
--設置前綴索引
ALTER TABLE people ADD INDEX index_name(car_id(8))

或者使用Navicat設置索引
image.png

增加crc字段

添加個 crc 字段,存儲身份證號的時候 存入身份證號的 crc 信息(業務層計算)。
計算方式請自行百度吧,基本都有輪子


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM