0

このクエリを使用して、ユーザーの年齢を計算しています。

SELECT 
((YEAR(CURDATE())-YEAR(um.date_birth)) - (RIGHT(CURDATE(),5)<RIGHT(um.date_birth,5))) 
FROM user_meta AS um
WHERE um.uid = 2

それを行うための最速/軽量の方法があるのだろうか。これをより大きな選択でネストして使用しているので、何らかの形で全体的なパフォーマンスを向上させてもかまいません。ありがとうございました。

4

2 に答える 2

1

フィールドを頻繁に計算する必要がある場合は、テーブルを変更して新しい列を追加し、計算を容易にすることをお勧めします。

たとえば、各クエリで生年月日ごとに YEAR を計算するのではなく、単純に YEAR 列を追加し、生年月日でテーブルを一度更新し、年を INT として格納します。

そうすれば、年を把握する必要があるたびに、フィールドを選択するだけです。

于 2012-04-25T20:24:36.653 に答える
1
select (CURDATE()-birth_dt)/365 from dual
于 2012-04-25T20:29:11.650 に答える