Мне нужно было пару раз погуглить, поэтому я делюсь своими вопросами и ответами.
105
Используйте SHOW INDEX
так:
SHOW INDEX FROM [tablename]
Документы: https://dev.mysql.com/doc/refman/5.0/en/show-index.html
my_table
ГДЕ Key_name = 'index_to_check';Пытаться:
Он сообщит вам, есть ли какой-либо индекс в определенном столбце, без необходимости знать имя, данное индексу. Он также будет работать в хранимой процедуре (в отличие от показа индекса)
источник
вы можете узнать, существует ли уникальный ключ в таблице
источник
источник
Используйте следующий оператор: SHOW INDEX FROM your_table
А затем проверьте результат по полям: row ["Table"], row ["Key_name"]
Убедитесь, что вы правильно написали "Key_name"
источник
чтобы просто посмотреть на макет таблиц из cli. ты бы сделал
или
источник
вы можете использовать следующий оператор SQL, чтобы проверить, был ли данный столбец в таблице проиндексирован или нет
так как объединения выполняются против INNODB_SYS_ *, поэтому индексы совпадений поступают только из таблиц INNODB
источник
Если вам нужна функциональность, если индекс для столбца существует (здесь на первом месте по порядку) в качестве функции базы данных, вы можете использовать / принять этот код. Если вы хотите проверить, существует ли индекс вообще независимо от позиции в многоколоночном индексе, просто удалите часть «AND SEQ_IN_INDEX = 1».
источник
Попробуйте использовать это:
источник
Вы не можете выполнить конкретный запрос индекса шоу, потому что он выдаст ошибку, если индекс не существует. Следовательно, вы должны захватить все индексы в массив и просмотреть их, если вы хотите избежать ошибок SQL.
Вот как я это делаю. Я беру все индексы из таблицы (в данном случае
leads
), а затем в цикле foreach проверяю, существует ли имя столбца (в данном случаеprovince
) или нет.Таким образом, вы действительно можете сузить атрибуты индекса. Сделайте
print_r
из$res
, чтобы увидеть, с чем вы можете работать.источник