これを数回Googleに送信する必要があるので、Q/Aを共有しています。
つかいます SHOW INDEX
そのようです:
SHOW INDEX FROM [tablename]
ドキュメント: https://dev.mysql.com/doc/refman/5.0/en/show-index.html
試してください:
SELECT * FROM information_schema.statistics
WHERE table_schema = [DATABASE NAME]
AND table_name = [TABLE NAME] AND column_name = [COLUMN NAME]
インデックスに与えられた名前を知る必要なく、特定の列に何らかの種類のインデックスがあるかどうかを通知します。 (インデックスを表示するのではなく)ストアドプロシージャでも機能します。
SHOW KEYS FROM tablename WHERE Key_name='unique key name'
テーブルに一意のキーが存在するかどうかを確認できます
show index from table_name where Column_name='column_name';
次のステートメントを使用します。SHOW INDEX FROM your_table
次に、フィールドの結果を確認します。row["Table"]、row ["Key_name"]
「Key_name」を正しく記述してください
cLIからテーブルレイアウトを見るだけです。あなたがするだろう
desc mytable
または
テーブルmytableを表示
列のインデックスがデータベース関数として存在する場合(ここでは順番に)機能が必要な場合は、このコードを使用/採用できます。 multi-column-indexの位置に関係なく、インデックスが存在するかどうかを確認する場合は、「AND SEQ_IN_INDEX = 1」の部分を削除するだけです。
DELIMITER $$
CREATE FUNCTION `fct_check_if_index_for_column_exists_at_first_place`(
`IN_SCHEMA` VARCHAR(255),
`IN_TABLE` VARCHAR(255),
`IN_COLUMN` VARCHAR(255)
)
RETURNS tinyint(4)
LANGUAGE SQL
DETERMINISTIC
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'Check if index exists at first place in sequence for a given column in a given table in a given schema. Returns -1 if schema does not exist. Returns -2 if table does not exist. Returns -3 if column does not exist. If index exists in first place it returns 1, otherwise 0.'
BEGIN
-- Check if index exists at first place in sequence for a given column in a given table in a given schema.
-- Returns -1 if schema does not exist.
-- Returns -2 if table does not exist.
-- Returns -3 if column does not exist.
-- If the index exists in first place it returns 1, otherwise 0.
-- Example call: SELECT fct_check_if_index_for_column_exists_at_first_place('schema_name', 'table_name', 'index_name');
-- check if schema exists
SELECT
COUNT(*) INTO @COUNT_EXISTS
FROM
INFORMATION_SCHEMA.SCHEMATA
WHERE
SCHEMA_NAME = IN_SCHEMA
;
IF @COUNT_EXISTS = 0 THEN
RETURN -1;
END IF;
-- check if table exists
SELECT
COUNT(*) INTO @COUNT_EXISTS
FROM
INFORMATION_SCHEMA.TABLES
WHERE
TABLE_SCHEMA = IN_SCHEMA
AND TABLE_NAME = IN_TABLE
;
IF @COUNT_EXISTS = 0 THEN
RETURN -2;
END IF;
-- check if column exists
SELECT
COUNT(*) INTO @COUNT_EXISTS
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_SCHEMA = IN_SCHEMA
AND TABLE_NAME = IN_TABLE
AND COLUMN_NAME = IN_COLUMN
;
IF @COUNT_EXISTS = 0 THEN
RETURN -3;
END IF;
-- check if index exists at first place in sequence
SELECT
COUNT(*) INTO @COUNT_EXISTS
FROM
information_schema.statistics
WHERE
TABLE_SCHEMA = IN_SCHEMA
AND TABLE_NAME = IN_TABLE AND COLUMN_NAME = IN_COLUMN
AND SEQ_IN_INDEX = 1;
IF @COUNT_EXISTS > 0 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END$$
DELIMITER ;