MySQL索引長度限制原理解析
這篇文章主要介紹了MySQL索引長度限制原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
索引
TextField是不支持建立索引的
MySQL對索引字段長度有限制
innodb引擎的每個索引列長度限制為767字節(jié)(bytes),所有組成索引列的長度和不能大于3072字節(jié)
myisam引擎的每個索引列長度限制為1000字節(jié),所有組成索引列的長度和不能大于1000字節(jié)
varchar的最大長度是指字符長度,若數(shù)據(jù)庫字符集為utf-8,則一個字符占3個bytes。因此在utf-8字符集下,innodb引擎創(chuàng)建的單列索引長度不能超過255個字符
mysql版本不同而導致的索引長度限制不同
在MySQL5.5版本,引入了innodb_large_prefix,用來禁用大型前綴索引,以便與不支持大索引鍵前綴的早期版本的InnoDB兼容
開啟innodb_large_prefix可以使單索引的長度限制達到3072字節(jié)(但是聯(lián)合索引總長度限制還是3072字節(jié)),禁用時單索引的長度限制為767字節(jié)
在MySQL5.5版本與MySQL5.6版本,innodb_large_prefix是默認關(guān)閉的,在MySQL5.7及以上版本則默認開啟
在MySQL8.0版本中,innodb_large_prefix已被移除
這就是我在自己機器(MySQL8.0)上可以創(chuàng)建1024字符(utf8字符集下表示3072字節(jié))長的索引,而在服務(wù)器(MySQL5.5)上不行的原因
測試索引長度限制的腳本:
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;
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
mysql 5.7.17 winx64解壓版安裝配置方法圖文教程
這篇文章主要為大家詳細介紹了mysql 5.7.17 winx64解壓版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-06-06
如何給mysql數(shù)據(jù)庫重新命名(操作步驟)
這篇文章主要介紹了如何給mysql數(shù)據(jù)庫重新命名,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-05-05
簡析mysql字符集導致恢復數(shù)據(jù)庫報錯問題
這篇文章主要介紹了簡析mysql字符集導致恢復數(shù)據(jù)庫報錯問題,具有一定參考價值,需要的朋友可以了解。2017-10-10
mysql 數(shù)據(jù)插入優(yōu)化方法之concurrent_insert
在MyISAM里讀寫操作是串行的,但當對同一個表進行查詢和插入操作時,為了降低鎖競爭的頻率,根據(jù)concurrent_insert的設(shè)置,MyISAM是可以并行處理查詢和插入的2021-07-07
mysql部分字符存儲報錯 Incorrect string value問題解決
MySQL中的utf-8字符集并不完全支持utf-8,本文這要介紹了mysql部分字符存儲報錯 Incorrect string value問題解決,具有一定的參考價值,感興趣的可以了解一下2023-07-07
MySQL數(shù)據(jù)權(quán)限的實現(xiàn)詳情
這篇文章主要介紹了MySQL數(shù)據(jù)權(quán)限的實現(xiàn)詳情,文章通過實際案例,從代碼實戰(zhàn)的角度來實現(xiàn)這樣的一個數(shù)據(jù)權(quán)限。具體詳細介紹,具有一定的參考價值2022-08-08

