Panjang Indeks VARCHAR MySQL
Isu:
Dalam MySQL, lajur varchar dengan awalan indeks yang lebih besar daripada 255 aksara tidak digunakan untuk mengisih data, walaupun mempunyai indeks yang mencukupi saiz.
Jawapan:
MySQL menganggap 3 bait setiap aksara utf8 dalam pengiraan indeks. Dengan had indeks 767-bait, ini diterjemahkan kepada maksimum 255 aksara.
Penjelasan:
- Saiz indeks MySQL ditentukan dalam bait, walaupun untuk jenis data bukan binari seperti VARCHAR.
- Saiz indeks awalan maksimum setiap lajur ialah 767 bait.
- Untuk lajur utf8, MySQL menganggap setiap aksara menduduki 3 bait.
- Oleh itu, 767 / 3 = 255 aksara ialah panjang indeks maksimum untuk lajur utf8.
Tambahan Pertimbangan:
- Kekangan unik pada lajur utf8 dihadkan kepada 255 aksara kerana keseluruhan nilai sel diindeks.
- Indeks biasa boleh digunakan pada lajur yang lebih besar daripada 255 aksara , tetapi hanya akan mengindeks 255 aksara pertama.
- Jika kebanyakan aksara dalam lajur ialah ASCII (aksara 1-bait), mungkin untuk memuatkan lebih daripada 255 aksara ke dalam indeks, tetapi pengiraan MySQL tidak mengambil kira perkara ini.
- Dengan pilihan innodb_large_prefix didayakan, had indeks boleh ditingkatkan kepada 3072 bait untuk jadual menggunakan baris DINAMIK atau COMPRESSED format.
Atas ialah kandungan terperinci Mengapa Indeks MySQL VARCHAR Terhad kepada 255 Aksara dalam UTF8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!