Saya perlu Google ini beberapa kali, jadi saya membagikan Q / A saya.
105
Gunakan SHOW INDEX
seperti ini:
SHOW INDEX FROM [tablename]
Docs: https://dev.mysql.com/doc/refman/5.0/en/show-index.html
my_table
MANA Key_name = 'index_to_check';Mencoba:
Ini akan memberi tahu Anda jika ada indeks dalam bentuk apa pun pada kolom tertentu tanpa perlu mengetahui nama yang diberikan ke indeks. Ini juga akan bekerja dalam prosedur yang tersimpan (sebagai lawan untuk menampilkan indeks)
sumber
Anda dapat menemukan jika ada kunci unik di tabel
sumber
sumber
Gunakan pernyataan berikut: TAMPILKAN INDEKS DARI tabel_Anda
Dan kemudian periksa hasil untuk bidang: baris ["Tabel"], baris ["Nama_kunci"]
Pastikan Anda menulis "Key_name" dengan benar
sumber
untuk hanya melihat tata letak tabel dari cli. kamu akan melakukannya
atau
sumber
Jika Anda memerlukan fungsionalitas jika indeks untuk kolom ada (di sini di urutan pertama) sebagai fungsi database Anda dapat menggunakan / mengadopsi kode ini. Jika Anda ingin memeriksa apakah ada indeks sama sekali terlepas dari posisinya dalam indeks multi-kolom, maka hapus saja bagian "AND SEQ_IN_INDEX = 1".
sumber
Anda dapat menggunakan pernyataan SQL berikut untuk memeriksa kolom yang diberikan pada tabel diindeks atau tidak
karena gabungan melawan INNODB_SYS_ *, jadi indeks kecocokan hanya berasal dari tabel INNODB saja
sumber
Coba gunakan ini:
sumber
Anda tidak dapat menjalankan kueri indeks acara tertentu karena akan memunculkan kesalahan jika indeks tidak ada. Oleh karena itu, Anda harus mengambil semua indeks ke dalam array dan mengulanginya jika Anda ingin menghindari kesalahan SQL.
Inilah cara saya melakukannya. Saya mengambil semua indeks dari tabel (dalam kasus ini,
leads
) dan kemudian, dalam loop foreach, periksa apakah nama kolom (dalam kasus ini,province
) ada atau tidak.Dengan cara ini Anda benar-benar dapat mempersempit atribut indeks. Lakukan
print_r
dari$res
dalam rangka untuk melihat apa yang dapat Anda bekerja dengan.sumber