Baru saja menemukan masalah aneh, di mana tergantung pada bagaimana saya membuat indeks, nama indeks diperlukan.
http://dev.mysql.com/doc/refman/5.5/id/create-index.html
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name
ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name
Sepertinya saya bahwa panggilan CREATE INDEX, seharusnya tidak membuat nama indeks diperlukan. Saya ingin tahu apakah ini MySQLism, atau standar SQL?
sumber
ALTER TABLE
(ada kasus-kasus tertentu di mana indeks implisit akan dibuat oleh berbagai DBMS untuk mendukung kendala, tapi bukan itu yang saya maksud).Jika Anda tidak memberikan nama untuk indeks, MySQL akan secara otomatis memberi nama indeks untuk Anda.
The
ALTER TABLE ADD INDEX
pernyataan di atas akan menghasilkan indeks berikut:col1
col1_2
col2
Jika Anda membuat indeks dengan hanya satu kolom, mungkin tidak perlu memberikan nama untuk indeks (karena nama indeks akan sama dengan nama kolom). Tetapi jika Anda membuat indeks dengan beberapa kolom, mungkin lebih baik untuk memberikan nama untuk indeks sehingga akan lebih mudah untuk mengidentifikasi indeks.
Merupakan praktik yang baik untuk memberikan nama untuk indeks (dan awalan dengan
idx
atau sesuatu untuk mengidentifikasinya sebagai indeks):sumber