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

2021-10-19 17:11:20 字數 841 閱讀 1389

應用場景:

資料庫裡有個位址(address)字段,型別為varchar(100),業務決定了要經常根據address來進行查詢。

確定選擇性:

sql**

select count(distinct(address))/count(*) as selectivity from info;

| selectivity |

|      0.8745 |

選擇性很好,但是長度為100,對整個字段建立索引顯然不合適,可以考慮建立字首索引,例如,看看其選擇性:sql**

select count(distinct(left(address,5)))/count(*) as selectivity from info;

| selectivity |

|      0.5981 |

選擇性還不錯,但和0.8745相比還是太低,所以我們可以將字首長度增加到10,再看看選擇性:

sql**

select count(distinct(left(address,10)))/count(*) as selectivity from info;

| selectivity |

|      0.8239 |

和0.8745已經很接近了,但是索引長度只有10,所以就可以決定建立字首索引了。

字首索引兼顧索引大小和查詢速度,但是其缺點是不能用於order by和group by操作(會產生慢查詢),也不能用於covering index(即當索引本身包含查詢所需全部資料時,不再訪問資料檔案本身)。

建立字首索引:

alter table test.test add key (address(10));

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

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

mysql 索引語法 MySQL索引的基本語法

索引是排好序的資料結構!可以用在 where 條件查詢的字段,和order by 排序的字段,有了索引,便可以快速地定位資料所在的實體地址並找出來。索引的分類 1.普通索引 normal 沒有任何約束,主要用於提高查詢效率 2.唯一索引 unique 在普通索引的基礎上增加了資料唯一性的約束,可以有...

mysql索引語法 MySQL建立索引的語法

建立表時建立索引 語法 create table 表名 屬性名 資料型別 完整性約束條件 unique fulltext spatial index key 別名 屬性名 1 長度 asc desc 1 建立普通索引 create table index1 id int,name varchar 2...