2016-10-10 9 views
0

私は人の誕生日が保存されているシンプルなテーブルを持っています。私は関数が "Date"オブジェクト(誕生日)をとり、int(Age)を返す単純なスカラーユーザー定義関数も持っています。私は、これは「calculateAge」機能はすることを意味し、「dbo.calculateAge(Birthday)」が2回書かれていたので、私は思っていた、「選択」のクエリで17選択クエリでユーザー定義関数を2回呼び出しても効率が悪くなりますか?

の年齢を持つすべてのエントリを選択しようとするクエリを書きました二度呼ばれる?これは非効率につながるか?はいの場合は、このクエリを書くためのよりよい方法がありますか?私はそれが有用であるとは思わないので、私はここに "calculateAge" 機能の実装を含めるしないことを選択した

enter image description here

マイクエリ:

enter image description here

マイ表私が求めている質問に。

+1

これは2回呼び出すことはできませんが、 'Birthday'カラムで関数を呼び出すため、このカラムのすべてのインデックスがMySQLで使用できなくなります。私は、インデックスを使用することができないと思うのは、エンジンがその機能を1回か2回呼び出す必要があるかどうかよりも重要です。 –

+0

あなたもこれを見てください:http://stackoverflow.com/questions/10977607/optimizing-a-stored-function-call-in-select-and-where-clauses –

+1

*コード形式*&*結果*ウィンドウは 'Sql Server'に属しているようです。しかし、あなたは 'Mysql'タグを付けました –

答えて

1

これは、「calculateAge」関数が2回呼び出されることを意味しますか?

いいえ、一度だけです。しかし、あなたの関数が確定的であると宣言されていることを確かめてください。

これは非効率につながりますか?

はい場合は、このクエリを記述するより良い方法はありますか?

いいです。

関連する問題