MySQL串索引是指將字符串類型的數據加入索引并且利用BTree等數據結構實現高效檢索的一種索引方式。它主要使用在varchar和char數據類型上,可以在字符型數據上的高效索引,使字符型數據也能實現快速的檢索。
與數值型數據不同,字符型數據存在著具有相同前綴的情況。例如一個電話號碼 "02112345678" 和 "02112349999" ,它們的前綴相同,但是卻有著不同的后綴。MySQL串索引將這種情況考慮到了,支持在共享相同前綴的值之間快速導航。
在MySQL中,我們通常創建索引使用的語法是 Create Index TableName_IndexName On TableName(`ColumnName`). 串索引的創建方式與普通索引類似,但是需要注意以下幾點:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL DEFAULT '', `age` tinyint(4) DEFAULT '0', `phone` varchar(11) NOT NULL DEFAULT '', PRIMARY KEY (`id`), KEY `idx_age` (`age`), KEY `idx_phone` (`phone`(5)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
創建串索引的一些需要注意的地方如下:
- 在CREATE TABLE 時創建串索引要加寬數據類型長度。例如在Create Table時如果需要創建長度為5的字符串類型的Index,我們應該將這個字段數據類型定義為 varchar(6)。
- 在 MySQL 的串索引中,如果指定了前綴長度,那么從索引數據結構的角度來看,這個索引就是一個定長的索引。即一個索引項固定使用前綴長度的字節數。
- 如果指定的前綴長度大于了該字段的實際長度,那么這個索引也不能起到實際上的作用,否則,索引將會非常大,占用磁盤和內存。
在使用MySQL串索引時需要注意以上幾點,避免出現一些不必要的錯誤和異常。
下一篇圖片旋轉 css