Ich musste dies ein paar Mal googeln, daher teile ich meine Fragen und Antworten.
105
Verwenden Sie SHOW INDEX
wie folgt:
SHOW INDEX FROM [tablename]
Dokumente: https://dev.mysql.com/doc/refman/5.0/en/show-index.html
my_table
WHERE Key_name = 'index_to_check';Versuchen:
Hier erfahren Sie, ob in einer bestimmten Spalte ein Index vorhanden ist, ohne dass der Name des Index bekannt sein muss. Es funktioniert auch in einer gespeicherten Prozedur (im Gegensatz zum Index anzeigen).
quelle
Sie können feststellen, ob in der Tabelle ein eindeutiger Schlüssel vorhanden ist
quelle
quelle
Verwenden Sie die folgende Anweisung: SHOW INDEX FROM your_table
Überprüfen Sie dann das Ergebnis für die Felder: Zeile ["Tabelle"], Zeile ["Schlüsselname"]
Stellen Sie sicher, dass Sie "Key_name" richtig schreiben
quelle
um nur ein Tabellenlayout aus der CLI zu betrachten. Du würdest
oder
quelle
Wenn Sie die Funktionalität benötigen, wenn ein Index für eine Spalte (hier an erster Stelle nacheinander) als Datenbankfunktion vorhanden ist, können Sie diesen Code verwenden / übernehmen. Wenn Sie unabhängig von der Position in einem mehrspaltigen Index prüfen möchten, ob überhaupt ein Index vorhanden ist, löschen Sie einfach den Teil "AND SEQ_IN_INDEX = 1".
quelle
Mit der folgenden SQL-Anweisung können Sie überprüfen, ob die angegebene Spalte in der Tabelle indiziert wurde oder nicht
Da die Verknüpfungen gegen INNODB_SYS_ * gerichtet sind, stammen die Übereinstimmungsindizes nur aus INNODB-Tabellen
quelle
Versuchen Sie Folgendes:
quelle
Sie können keine bestimmte Show-Index-Abfrage ausführen, da sie einen Fehler auslöst, wenn kein Index vorhanden ist. Daher müssen Sie alle Indizes in ein Array packen und sie durchlaufen, wenn Sie SQL-Fehler vermeiden möchten.
Hier ist, wie ich es mache. Ich nehme alle Indizes aus der Tabelle (in diesem Fall
leads
) und überprüfe dann in einer foreach-Schleife, ob der Spaltenname (in diesem Fallprovince
) vorhanden ist oder nicht.Auf diese Weise können Sie die Indexattribute wirklich eingrenzen. Machen Sie eine
print_r
von,$res
um zu sehen, mit was Sie arbeiten können.quelle