0

次のように作成されたテーブルがあるとします。

create table `test_table` (
  `col1` varchar(128) NOT NULL,
  PRIMARY KEY (`col1`(16))
);

ここで、スキーマを調べて主キーに関する情報を探すスクリプトがあるとします。そのスクリプトは、の出力を解析せずに、インデックスのプレフィックスの長さ (上記の例では 16) をどのように見つけることができますshow create tableか? この情報はinformation_schema.key_column_usage(とにかく MySQL 5.1 では) ありませんが、information_schema のどこかにありますか?

4

2 に答える 2

2

information_schema.STATISTICSテーブル (SUB_PARTフィールド)を使用してみてください-

SELECT
  TABLE_SCHEMA, TABLE_NAME, INDEX_NAME, SUB_PART
FROM
  information_schema.STATISTICS

また

SHOW INDEXステートメント。

于 2012-06-15T05:48:59.680 に答える
0

テーブル エンジンを指定していないので、InnoDB を想定しています。あなたの質問について - InnoDB がインデックス データを格納する方法が原因で、インデックス サイズを取得することは不可能です。あなたの問題で報告された MySQL のバグは次のとおりです。ページの下部にある応答を参照してください: http://bugs.mysql.com/bug.php?id=57192 :

これは仕様によるものです。InnoDB のテーブル データは、主キー (明示的または暗黙的) のインデックス構造に格納されます。したがって、プライマリ キーはデータであり、そのサイズを (セカンダリ) インデックス サイズとして報告する必要はありません。

http://dev.mysql.com/doc/refman/5.1/en/innodb.htmlを読んでください。例:

「InnoDB は、クラスター化されたインデックスにユーザー データを格納して、主キーに基づく一般的なクエリの I/O を削減します。」

于 2012-06-14T22:12:04.143 に答える