mysql優化 怎麼建立字首索引

2021-10-23 03:53:43 字數 1229 閱讀 2554

當我們索引的字段是很長的字串時,可以用到字首索引

表結構

create table `tb_goods_spu` (

`id` bigint(20) not null comment '主鍵',

`goods_name` varchar(128) not null comment '商品名稱',

primary key (`id`)

建立字首索引結構

alter table tb_goods_spu add key(goods_name(5));
我們建立了乙個長度為5的字首索引,如何確定字首縮影的長度呢?我們可以先查出最常見的商品名稱資料

select count(*) as count,goods_name from tb_goods_spu 

group by goods_name order by count desc limit 10;

結果:

我們發現前面的出現的次數都是幾次和十幾次

我們先從2個字首字母開始

select count(*) as count,left(goods_name,2) as pre from tb_goods_spu 

group by pre order by count desc limit 10;

結果:

字首的個數比原來的次數多了,因為唯一字首比唯一商品名稱要少得多。我們可以增加字首長度

select count(*) as count,left(goods_name,7) as pre from tb_goods_spu 

group by pre order by count desc limit 10;

我們發現到7就接近了,可以建長度為7的。

字首索引無法使用order by 和 group by,也無法使用字首索引做覆蓋掃瞄

這裡的資料太少,不太明顯。但是只要更接近原字段的選擇性就行。

mysql 建字首索引 MySQL 字首索引

檢視出現頻率 select count as cnt,city from sakila.city demo group by city order by cnt desc limit 10 1.select count distinct city count from sakila.city dem...

mysql 字首索引 語法 MySQL 字首索引

索引字首 使用 字串列的索引規範中的語法,您可以建立僅使用列首字元的索引 以這種方式僅索引列值的字首可以使索引檔案小得多。為a 或 column 編制索引時 必須為索引指定字首長度。例如 col name n nblobtext create table test blob col blob,ind...

mysql 字首索引 語法 mysql字首索引

應用場景 資料庫裡有個位址 address 字段,型別為varchar 100 業務決定了要經常根據address來進行查詢。確定選擇性 sql select count distinct address count as selectivity from info selectivity 0.87...