MySQL VARCHAR 索引長度
MySQL 表的最大索引長度為 767 位元組。這是每列的,因此複合索引總共不能超過 767 位元組。但是,此規則有一些例外:
- 啟用 innodb_large_prefix 配置選項後,使用 DYNAMIC 或 COMPRESSED 行格式的 InnoDB 表的索引長度限制將提高到 3072 位元組。
- 對於utf8字元集,MySQL假設每個字元3個位元組。因此,可以索引的最大字元數為 255 (767 / 3)。
在您的具體情況下:
- 您的產品表有一個類型為 varchar(512) 的名稱列。
- 您在此列上建立了索引ALTER TABLE products ADD INDEX (name(512))。
您建立的索引未被使用,因為它超過了最大索引長度 767 位元組。這是因為 MySQL 假定每個 UTF-8 字元佔 3 個字節,即 512 個字元 * 3 個位元組/字元 = 1536 個位元組。
要解決此問題,您可以:
-
將索引的長度減少到255 個字元或
ALTER TABLE products ADD INDEX (name(255));
-
啟用innodb_large_prefix 設定選項並使用DYNAMIC 或 COMPRESSED 行格式。
SET innodb_large_prefix = ON; ALTER TABLE products ROW_FORMAT=COMPRESSED;
其他注意:
- 如果您主要儲存ASCII 字元(每個字元1 個位元組),則可以指定最多767 個位元組的索引。
- 可以儲存使用 utf8mb4 字元集的 4 位元組字元。但是,這將進一步減少可索引的最大字元數。
以上是為什麼我的 MySQL VARCHAR(512) 索引沒有被使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]

本文討論了使用Drop Table語句在MySQL中放下表,並強調了預防措施和風險。它強調,沒有備份,該動作是不可逆轉的,詳細介紹了恢復方法和潛在的生產環境危害。

本文討論了在PostgreSQL,MySQL和MongoDB等各個數據庫中的JSON列上創建索引,以增強查詢性能。它解釋了索引特定的JSON路徑的語法和好處,並列出了支持的數據庫系統。

文章討論了使用準備好的語句,輸入驗證和強密碼策略確保針對SQL注入和蠻力攻擊的MySQL。(159個字符)


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

MantisBT
Mantis是一個易於部署的基於Web的缺陷追蹤工具,用於幫助產品缺陷追蹤。它需要PHP、MySQL和一個Web伺服器。請查看我們的演示和託管服務。

Atom編輯器mac版下載
最受歡迎的的開源編輯器

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)