MySQL索引長(zhǎng)度限制原理解析
這篇文章主要介紹了MySQL索引長(zhǎng)度限制原理解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
索引
TextField是不支持建立索引的
MySQL對(duì)索引字段長(zhǎng)度有限制
innodb引擎的每個(gè)索引列長(zhǎng)度限制為767字節(jié)(bytes),所有組成索引列的長(zhǎng)度和不能大于3072字節(jié)
myisam引擎的每個(gè)索引列長(zhǎng)度限制為1000字節(jié),所有組成索引列的長(zhǎng)度和不能大于1000字節(jié)
varchar的最大長(zhǎng)度是指字符長(zhǎng)度,若數(shù)據(jù)庫(kù)字符集為utf-8,則一個(gè)字符占3個(gè)bytes。因此在utf-8字符集下,innodb引擎創(chuàng)建的單列索引長(zhǎng)度不能超過255個(gè)字符
mysql版本不同而導(dǎo)致的索引長(zhǎng)度限制不同
在MySQL5.5版本,引入了innodb_large_prefix,用來禁用大型前綴索引,以便與不支持大索引鍵前綴的早期版本的InnoDB兼容
開啟innodb_large_prefix可以使單索引的長(zhǎng)度限制達(dá)到3072字節(jié)(但是聯(lián)合索引總長(zhǎng)度限制還是3072字節(jié)),禁用時(shí)單索引的長(zhǎng)度限制為767字節(jié)
在MySQL5.5版本與MySQL5.6版本,innodb_large_prefix是默認(rèn)關(guān)閉的,在MySQL5.7及以上版本則默認(rèn)開啟
在MySQL8.0版本中,innodb_large_prefix已被移除
這就是我在自己機(jī)器(MySQL8.0)上可以創(chuàng)建1024字符(utf8字符集下表示3072字節(jié))長(zhǎng)的索引,而在服務(wù)器(MySQL5.5)上不行的原因
測(cè)試索引長(zhǎng)度限制的腳本:
use test; drop table if exists test_index_len; create table test_index_len(long_char varchar(1025) primary key) ENGINE=InnoDB charset=utf8;
use test; drop table if exists test_index_len; create table test_index_len( long_char varchar(24), origin_str varchar(1000), key test_index(long_char, origin_str)) ENGINE=InnoDB charset=utf8;
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于MySQL與Golan分布式事務(wù)經(jīng)典的七種解決方案
本文介紹了分布式事務(wù)的一些基礎(chǔ)理論,并對(duì)常用的分布式事務(wù)方案進(jìn)行了講解;在文章的后半部分還給出了事務(wù)異常的原因、分類以及優(yōu)雅的解決方案;最后以一個(gè)可運(yùn)行的分布式事務(wù)例子,將前面介紹的內(nèi)容以簡(jiǎn)短的程序進(jìn)行演示,需要的朋友可以參考一下文章具體內(nèi)容2021-10-10ubuntu kylin 14.10下多個(gè)mysql 5.7.14安裝教程
這篇文章主要為大家分享了ubuntu kylin 14.10下多個(gè)mysql 5.7.14安裝教程,感興趣的朋友可以參考一下2016-08-08MySql安裝與配置方法(MySQL添加用戶、刪除用戶與授權(quán))
這篇文章主要介紹了MySql安裝與配置方法(MySQL添加用戶、刪除用戶與授權(quán))的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08