MySQL索引長(zhǎng)度限制原理解析
這篇文章主要介紹了MySQL索引長(zhǎng)度限制原理解析,文中通過(guò)示例代碼介紹的非常詳細(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)度不能超過(guò)255個(gè)字符
mysql版本不同而導(dǎo)致的索引長(zhǎng)度限制不同
在MySQL5.5版本,引入了innodb_large_prefix,用來(lái)禁用大型前綴索引,以便與不支持大索引鍵前綴的早期版本的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)文章
mysql 5.7.17 winx64解壓版安裝配置方法圖文教程
這篇文章主要為大家詳細(xì)介紹了mysql 5.7.17 winx64解壓版安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
如何給mysql數(shù)據(jù)庫(kù)重新命名(操作步驟)
這篇文章主要介紹了如何給mysql數(shù)據(jù)庫(kù)重新命名,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
Mysql聯(lián)合索引的原理與實(shí)現(xiàn)
聯(lián)合索引是一種將多個(gè)列組合成一個(gè)索引的技術(shù),以提高基于這些列進(jìn)行查詢的性能,本文主要介紹了Mysql聯(lián)合索引的原理與實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-08-08
簡(jiǎn)析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫(kù)報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了簡(jiǎn)析mysql字符集導(dǎo)致恢復(fù)數(shù)據(jù)庫(kù)報(bào)錯(cuò)問(wèn)題,具有一定參考價(jià)值,需要的朋友可以了解。2017-10-10
mysql 數(shù)據(jù)插入優(yōu)化方法之concurrent_insert
在MyISAM里讀寫操作是串行的,但當(dāng)對(duì)同一個(gè)表進(jìn)行查詢和插入操作時(shí),為了降低鎖競(jìng)爭(zhēng)的頻率,根據(jù)concurrent_insert的設(shè)置,MyISAM是可以并行處理查詢和插入的2021-07-07
mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問(wèn)題解決
MySQL中的utf-8字符集并不完全支持utf-8,本文這要介紹了mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-07-07
更改Mysql數(shù)據(jù)庫(kù)存儲(chǔ)位置的具體步驟
首先把mysql的服務(wù)先停掉,更改MySQL配置文件My.ini中的數(shù)據(jù)庫(kù)存儲(chǔ)主路徑,將老的數(shù)據(jù)庫(kù)存儲(chǔ)主路徑中的數(shù)據(jù)庫(kù)文件和文件夾復(fù)制到新的存儲(chǔ)主路徑,接下來(lái)重啟搞定2013-07-07
MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情
這篇文章主要介紹了MySQL數(shù)據(jù)權(quán)限的實(shí)現(xiàn)詳情,文章通過(guò)實(shí)際案例,從代碼實(shí)戰(zhàn)的角度來(lái)實(shí)現(xiàn)這樣的一個(gè)數(shù)據(jù)權(quán)限。具體詳細(xì)介紹,具有一定的參考價(jià)值2022-08-08

