こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

MySQLのインデックスについて

MySQLのインデックスについて
以下のSQLにてお聞きしたいことがあります。

SELECT * FROM table1 WHERE num = '1'

numはint型でインデックスを作成済の列なのですが、
問い合わせでは'1'のように文字列型で条件指定しています。
この場合、numに対するインデックスは効くでしょうか?
よろしくお願い致します。

追伸

なぜこのような質問をさせて頂くかと申しますと、
私は開発環境でZend Frameworkを使用しておりまして、
その中のZend_Dbを使用しているのですが、
名前つきパラメータを使用してSQLを実行した場合に、
実際の実行されているSQLではどのパラメータも、
シングルクォーテーションで囲われているのではと思うんです。
以前、SQL実行に失敗して出力されたエラーメッセージの一部に、
実際に実行されたSQLが記述されていたのですが、
数値型の列もシングルクォーテーションで囲われていたんです。
もしかしたら名前つきパラメータを使用すると、
すべてのパラメータが文字列型扱いされているのではと思い、
こちらに投稿させて頂きました。

投稿日時 - 2010-10-19 23:54:31

QNo.6261988

困ってます

質問者が選んだベストアンサー

EXPLAINで確認してみれば同じ挙動をしているように見えます。
基本的には効率はかわらないはずです

投稿日時 - 2010-10-21 11:16:58

お礼

ご回答ありがとうございます。
基本的に変わらないのであれば安心です。

投稿日時 - 2010-10-22 23:07:28

ANo.1

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

すでに回答いただいてるよう、explainで見てみるのが確実ですが、
実経験上も、問題なくインデックスが効いていました。
Zend+MySQLで。
バージョン(Zend、MySQL)によって異なる可能性はあります

投稿日時 - 2010-10-26 22:54:29

お礼

ご回答ありがとうございます。
やはり動作的には問題ないんですね。

投稿日時 - 2010-10-31 23:22:14

あなたにオススメの質問