質問: viewの元のテーブルのindexって有効なのでしょうか? viewの元のテーブルのindexって有効なのでしょうか? mysqlサーバのバージョンは5.0.77です。 どうぞよろしくお願いします。
回答: ビューの基表に、有効活用できるインデクスがあれば、インデクスは活用されます。 >例えば元のテーブルに「hoge_id(index)」があり、 >viewテーブルが「vtable」だとします。 >select * from vtable where hoge_id = 値 >または、 >select * from vtable left join atable on vatble.hoge_id = atable.id >(atable.idもindex) >などとした場合、hoge_idのindexが有効で高速に結果が返ってくるということでよろしいのでしょうか。 表の母体データ件数が相当に少ない(例えば、数百件など)とか、重複キー値が多量に存在するといった場合は、rdbmsのオプティマイザが、「インデクスを使うより、テーブルスキャン(表のデータを全件サーチ)した方が速い」と判断し、インデクスを利用しない場合もあります。 主キーなどユニークなキーでの「=」条件や範囲条件などで、母体データからある程度絞り込んだ検索をするなら、インデクスの活用で母体データが大量に増えても、一定の性能を出せます。