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

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

Patricia Arquette
Lepaskan: 2025-01-02 22:57:38
asal
197 orang telah melayarinya

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

Memahami Kekangan Panjang Indeks MySQL

Apabila menjalankan arahan yang disediakan dalam soalan, ralat berlaku kerana kunci indeks terlalu panjang. Panjang kunci maksimum yang dibenarkan oleh MySQL ialah 1000 bait.

Punca Ralat

Ralat berlaku kerana definisi indeks dalam percubaan migrasi untuk permata 'acts_as_taggable_on' mencipta indeks dengan tiga medan: taggable_id, taggable_type dan context. Gabungan medan ini melebihi had 1000 bait.

Penyelesaian

Untuk menyelesaikan ralat, adalah perlu untuk memahami perkara berikut:

  • Enjin Storan MySQL: MySQL menggunakan enjin storan yang berbeza, setiap satunya dengan indeks yang berbeza batasan. MyISAM mempunyai had 1000-bait, manakala InnoDB mempunyai had 767-bait.
  • Kesan Jenis Data: Jenis data lajur diindeks mempengaruhi saiz indeks. Untuk lajur VARCHAR, saiz sebenar indeks ialah tiga kali ganda saiz lajur yang diisytiharkan. Oleh itu, indeks pada lajur VARCHAR(100) akan menggunakan 300 bait.
  • Indeks Separa: Untuk mengatasi kekangan panjang indeks, indeks separa boleh dibuat. Indeks separa mengehadkan indeks kepada sebahagian daripada jenis data.

Contoh:

Untuk mencipta indeks pada hanya 50 aksara pertama 'lajur_anda ' lajur, sintaks berikut boleh digunakan:

CREATE INDEX example_idx ON YOUR_TABLE(your_column(50))
Salin selepas log masuk

Nota:

  • Indeks separa akan mengehadkan keberkesanan indeks untuk carian melebihi bahagian yang ditentukan.
  • Untuk kes khusus yang disebut dalam soalan, mungkin dinasihatkan untuk mempertimbangkan menggunakan pangkalan data yang berbeza dengan had panjang indeks yang lebih santai, seperti PostgreSQL.

Atas ialah kandungan terperinci Mengapa Indeks 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