2012-01-25 17 views
1

私の質問は、インデックスと主キーについてです。インデックスと主キー

のは、我々が持っているとしましょう。このようなテーブル:

select * from demo_table where to="" and media="" order by id desc limit 0,1; 

と:

demo_table 

| id     | int(11)  | NO | PRI |   | 
| subject    | varchar(255) | YES |  | NULL | 
| body     | text   | YES |  | NULL | 
| to     | varchar(255) | YES | MUL | NULL | 
| from     | varchar(255) | YES | MUL | NULL | 
| media    | varchar(255) | YES |  | NULL | 

私は/「メディア」カップル「から」特定の最後の行を探し、クエリを持っていますテーブルのインデックスを作成したいと思います。

CREATE INDEX to_media on demo_table(media,to); 

またはこのような:

CREATE INDEX to_media on demo_table(id,media,to); 

IDがソートされていることを見て、私はこのようなインデックスが作成すべきか? InnoDBは、他の賢明MYSAM

のために行くために挿入/更新ステートメントのその大規模な、よりに行く場合は、そのは、要件のような... に依存

+0

あなたの問題は何であり、あなたの質問は何ですか? – pltvs

+1

MyISAMまたはInnoDBテーブルですか? InnoDBでは、それを指定しなくても、PKは常にインデックスの最初のカラムになります。 – Mchl

+0

nullを許すような数の列に注意する必要があります。索引付けVARCHAR(255)列は、必ずしも良いアイデアではありません(必ずしも良い考えではありません)。クエリオプティマイザで使用される3つの部分のインデックスを取得しますか?私はあなたがすると確信していません。 2部構成のインデックスを使用するかもしれませんが、インデックスの存在を保証するのに十分なインデックスを使用するかどうかはわかりません。 –

答えて

0
CREATE INDEX to_media on demo_table(id,media,to); 
+0

無駄なテーブルです。 私の問題は、私が質問で提案した2種類のインデックスの間に違いがあるかどうかを知ることです。 FYI:私の場合、チェックする> 100000行のようなものがあります。 –

+0

そのような要求に依存します... 大規模で、挿入/更新ステートメントがInnodbに向かう場合 – Madhu