2016-04-04 8 views
3

効率的なを検索します(つまりインデックスを使用します)。特定の行の1つの列の値が同じ行の別の列の値と等しい行を選択するためのMySQLクエリです。列が別の列と等しい効率的なSQLクエリ

SELECT row_id FROM mytable WHERE row_id=some_id 

row_idはPRIMARYインデックスです。 some_idには独自の別個の一意でないインデックスがあります。テーブル全体のスキャンを必要とせずにこれを行う方法はありますか?

[解明/編集]

row_idsome_idは、unsigned int同じタイプの両方です。それぞれが列であり、それぞれがインデックスを持ちますが、row_idは一意であり、some_idはそうではないかもしれません。

+0

row_idにインデックスがある場合、some_idが同じタイプの場合はrow_idが使用されます。 – Hogan

+0

これは現在何をしていますか、 'explain extended'出力を投稿できますか? –

+0

理論的には、これを実装するために2つのインデックスを利用できるはずですが、MySQLにその最適化がない場合は驚かないでしょう。 – Barmar

答えて

0

row_idsome_idは両方とも列ですか?私は、たとえインデックスであっても、完全なテーブルスキャンが必要でないことを保証する方法はないと思います(例えば、両方のカラムがペアワイズであると考えてください)。このような場合、AFAIKインデックスを使用するとパフォーマンスが向上します(バイナリ検索のルックアップは個々の比較が高速になることを意味します)。フルテーブルスキャンを回避することはありません。

関連する問題