Rumah > pangkalan data > tutorial mysql > Mengapa Indeks Unik MySQL Saya Terlalu Panjang, dan Bagaimana Saya Boleh Membetulkannya?

Mengapa Indeks Unik MySQL Saya Terlalu Panjang, dan Bagaimana Saya Boleh Membetulkannya?

Mary-Kate Olsen
Lepaskan: 2024-12-13 15:43:10
asal
249 orang telah melayarinya

Why Is My MySQL Unique Index Too Long, and How Can I Fix It?

Penghadan Panjang Kunci MySQL dan Pembetulannya

Apabila cuba mencipta indeks unik pada dua lajur VARCHAR, pengguna mungkin menghadapi ralat "# 1071 - Kunci yang ditentukan terlalu panjang; panjang kunci maks ialah 767 bait". Ralat ini berpunca daripada pengehadan MySQL pada panjang kunci.

Memahami Had Panjang Kunci

Dalam MySQL versi 5.6 dan sebelumnya, terdapat panjang kunci maksimum 767 bait untuk jadual InnoDB. Had ini digunakan untuk gabungan semua medan diindeks dalam kunci unik. Untuk jadual MyISAM, had ini ialah 1,000 bait.

Faktor Pengekodan Aksara UTF-8

Apabila menggunakan pengekodan aksara UTF-8 (utf8mb4), adalah penting untuk ambil perhatian bahawa ia menggunakan sehingga empat bait untuk mewakili satu aksara. Akibatnya, panjang awalan indeks maks 767 bait secara berkesan dikurangkan kepada 191 aksara untuk medan yang dikodkan utf8mb4.

Penyelesaian Kemungkinan

  • Kurangkan Saiz medan VARCHAR: Menurunkan saiz VARCHAR medan boleh mengurangkan jumlah panjang kunci.
  • Pecahkan indeks: Buat subset lajur untuk diindeks, seperti yang dilihat dalam contoh:
ALTER TABLE `mytable` ADD UNIQUE ( column1(15), column2(200) );
Salin selepas log masuk
  • Semak model data: Mungkin berfaedah untuk menyemak model data untuk melaksanakan peraturan perniagaan tanpa melebihi had MySQL.

Dalam MySQL versi 5.7 dan lebih baru, panjang kunci maks telah ditingkatkan kepada 3072 bait, memberikan lebih fleksibiliti apabila berurusan dengan kunci besar. Walau bagaimanapun, adalah penting untuk mempertimbangkan faktor pengekodan aksara dan pengoptimuman model data untuk mengelakkan ralat panjang kunci.

Atas ialah kandungan terperinci Mengapa Indeks Unik MySQL Saya Terlalu Panjang, dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan