1

Facebook グループの 1 つで、誰かが質問をしました。

2 つのクエリがあるとします。

SELECT * FROM video WHERE video_id='45f54' AND video_type='youtube';

SELECT * FROM video WHERE video_type='youtube' AND video_id='45f54'

video_idインデックス付きフィールドです。

これら 2 つのクエリのパフォーマンスに違いはありますか?

句の直後にインデックス付きフィールドを置くWHERE方が速いと誰かが答えました....しかし、なぜですか? どっちも同じじゃない?

4

1 に答える 1

2

テーブルvideoが同一であると仮定すると、MySQL オプティマイザが WHERE 基準を内部で処理するため、これら 2 つのクエリは事実上同一です。同様の質問へのリンクがいくつかあります

最適化のために、次のことを検討することをお勧めします (まだ行っていない場合)。

  • video_type を ENUM() に変更するか、INTEGER を介してリンクする別のテーブルに変更します
  • video_type への変更を行った後、(video_type,video_id) にインデックスを付けます。
  • video_id の長さを制限します。つまり、常に 5 文字の長さの場合は CHAR(5) です。

個人的には、新しいテーブル「video_types」(videotypeID SMALLINT UNSIGNED AUTO_INCREMENT、videotype VARCHAR) を作成します。これにより、ビデオでの検索が潜在的にはるかに最適化される可能性がありますが、データに大きく依存します.

于 2013-04-23T09:27:14.027 に答える