mysql欄位索引的長度的意義?

時間 2021-06-03 07:53:23

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...