1樓:zhufeng
要搞清楚這個問題,首先要理解什麼是索引,索引是用來幹什麼的?所有的儲存是如何組織的,它的效能是與哪些因素有關係,什麼情況下效能會高,什麼情況下效能會低,什麼情況下會導致儲存浪費。你理解了這些問題以後就明白為什麼需要控制索引健的長度。
建議看一下新書《mysql運維內參》,其中的第八章對索引講的非常清楚,然後就可以知道為什麼他有這個限制了。
2樓:
同意樓上
MySQL :: MySQL 5.7 Reference Manual :: 14.1.14 CREATE INDEX Syntax
For string columns, indexes can be created that use only the
leading part of column values, using
col_name(length)
syntax to specify an index prefix length
3樓:
參考MySQL手冊 13.1.4.
CREATE INDEX語法對於CHAR和VARCHAR列,只用一列的一部分就可建立索引。建立索引時,使用col_name(length)語法,對字首編制索引。字首包括每列值的前length個字元。
BLOB和TEXT列也可以編制索引,但是必須給出字首長度。
此處展示的語句用於建立乙個索引,索引使用列名稱的前10個字元。
CREATE INDEX part_of_name ON customer (name(10));
因為多數名稱的前10個字元通常不同,所以此索引不會比使用列的全名建立的索引速度慢很多。另外,使用列的一部分建立索引可以使索引檔案大大減小,從而節省了大量的磁碟空間,有可能提高INSERT操作的速度。
mysql 索引是怎麼實現的?
說起索引就必須要先說下資料結構和演算法。資料結構和演算法是相互依存的,資料怎樣的儲存就意味著你需要可以使用什麼樣的演算法進行查詢。比如你是乙個無序陣列,你想查詢某乙個name A 的資料有哪些,你只能進行資料遍歷查詢了 但是這個陣列是按name排序的,這樣你就可以使用二分查詢或者同樣的是順序查詢,時...
mysql 用update更新欄位時遇到的問題如何解決?
mysqlops update admin set logintime time where id 1 你既然是數字型別,那麼必須做乙個轉換,且你用的是單引號 time 的含義是,把字串 time 賦值給乙個整型字段,肯定為哦的。修改為 update admin set logintime UNIN...
MySQL索引,最左字首匹配的內部原理是什麼?
其實你大可先拋開最左索引的概念,先有個這樣循序漸進的概念,能使用索引 使用索引進行範圍查詢 使用索引進行精確查詢,首先需要判斷你的查詢語句能否使用這個索引,這個很好判斷,a,b,c 排列,舉例來說,假設a,b,c的值都只能取1,2,3,那索引頁面的排列就是 1,1,1 1,1,2 1,1,3 1,2...