私は数億行のテーブルを持っています。列の1つは`status` varchar(10)
です。2つの同じ列を持つMySQLインデックス
ステータスのほとんどの値は1文字ですが、値は10までです。ただし、値のサブセットには独自のパターンがあります。ステータス値の全体のグループは、1文字の先頭に「c
」が続き、0から10,000までの数字が続きます。
私は、インデックスに次で、このコラムをしたいと思います:
ALTER TABLE tbl ADD KEY (status(1), status);
これは、2つの個々のキー、status(1)
上の1(全体の列の最初の文字)と第二status
を持つよりも良いだろう。一緒に彼らは常により速くなります。
しかしMySQLは、そのようなを作成するから私を禁止:
ERROR 1060 (42S21): Duplicate column name 'status'
どのように私はこの問題を解決することができますか?
電話帳の個々の名前のインデックスがあるような私にとっては、索引をデータベースとして検索するのにかなりの時間がかかります。これは間違った考えですか? – Mikhail
@Mikhailはい、その考え方は間違っています。どのようにフォーマットされているかとは無関係に、 'status'の検索はインデックスを利用することができます。 –
私はそれがそれを利用できることを理解します。あなたが言っていることは、最初のキャラクターを見上げることです、そして、残りの価値はそれほど速くはありませんか? – Mikhail