アプリ版:「スタンプのみでお礼する」機能のリリースについて

VIEWの元のテーブルのindexって有効なのでしょうか?
MYSQLサーバのバージョンは5.0.77です。
どうぞよろしくお願いします。

A 回答 (2件)

ビューの基表に、有効活用できるインデクスがあれば、インデクスは活用されます。



>例えば元のテーブルに「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のオプティマイザが、「インデクスを使うより、テーブルスキャン(表のデータを全件サーチ)した方が速い」と判断し、インデクスを利用しない場合もあります。

主キーなどユニークなキーでの「=」条件や範囲条件などで、母体データからある程度絞り込んだ検索をするなら、インデクスの活用で母体データが大量に増えても、一定の性能を出せます。
    • good
    • 2
この回答へのお礼

chukenkenkou 様、ご回答有難うございます。

なるほど、期待以上の答えを頂きました。

どうも有難うございました。

お礼日時:2010/07/24 04:11

有効です。

VIEWにはINDEXは作れませんし。
    • good
    • 0
この回答へのお礼

SaKaKashi 様、ご回答ありがとうございます。

有効なんですね。
安心しました。

えと、、
ちょっと自分の質問が説明不足だったせいで少し不安なので再確認させて頂きたいのですが、
例えば元のテーブルに「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が有効で高速に結果が返ってくるということでよろしいのでしょうか。
最初から上記のように質問すればよかったですね。。すみません。

どうぞよろしくお願いします。

お礼日時:2010/07/24 02:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A