2012-04-02 26 views
0

テーブル 'test'では、私はインデックスを持つ整数フィールドTestIDを持っています。私のアプリケーションで1234一部が動的に挿入され、また、NULLまたは空の文字列かもしれない、と私は文はそのせいで失敗したくないので、私は、今、2番目のオプションを使用しMySQL:varcharフィールドより高速な整数との比較ですか?

SELECT * FROM test WHERE TestID=1234 

SELECT * FROM test WHERE TestID='1234' 

SELECT * FROM test WHERE TestID=COALESCE(1234, 0) 

SELECT * FROM test WHERE TestID=COALESCE('1234', '') 

これらの文の間のスピードの違いは、どれくらい違いますか、まったく違いはありませんか?

+1

タイトルへの回答質問:はい –

答えて

0

TestID列がインデックスされていない場合、varcharは整数よりも遅くなります。しかし、このフィールドがインデックスに登録されていれば、スピードの違いはほとんどありません。

P.S.あなたの文字列が本当に長い場合 - インデックスはもっと嵩むのでその場合は整数を使用することがより好ましいでしょう

+0

フィールドは整数(mediumint)として格納されます。かさばる、そう? – Dylan

+0

正確です。値lengthに関するフレーズは、varcharフィールドに関連しています。整数値は少なくとも遅くならないでしょう。 – denied

関連する問題