比如:查询会员列表的话,where后面带很多个if test条件是不是会影响效率,还是重写个sql,但是如果每个条件查询都重写sql,sql又太多了,显得很乱。该怎么选择?
认证高级PHP讲师
効率にはあまり影響しません。結局のところ、これらは一部のメモリ操作です。Mybatis动态SQL一个最大的问题就是IF...TEST太多的话,后期维护会很累,因为一个SQL调用方很很多,到时候找组合会很麻烦,SQL调优会很吃力,所以尽量每个查询都写一个(分页除外),如果实在需要IF...TEST、あまり多くは推奨しないでください
Mybatis
SQL
IF...TEST
if判定は決まった方法で書けばそれほど遅くはなりませんが、動作しない場合はビューを使用してください
キャッシュが必要です。効率にあまり影響を与えるべきではありません。 さらに、N 個の条件がある場合、対応する条件の組み合わせは何個必要になりますか?
1. クエリ関数では where の後に多くの if テスト条件があることがよくあります。また、MyBatis は if テスト タグ関数を提供しているため、複数の SQL を記述してから Java コードを使用してオフロードを判断する場合と比べて、実行速度に大きく影響するのはデータベース サーバーとデータベース プラットフォームです。普通のプログラマーは、この問題を本当に心配する必要はありません。テスト環境に独自のコードを入れて、クエリ条件の変更を比較することもできます。キャッシュ remapResults を手動でオフにする必要があるため、クエリ結果列は効率にさらに影響します リーリー 要約すると、機能するかどうかに関係なく、まずコードと SQL を作成してテストしましょう!
効率にはあまり影響しません。結局のところ、これらは一部のメモリ操作です。
Mybatis
动态SQL
一个最大的问题就是IF...TEST
太多的话,后期维护会很累,因为一个SQL
调用方很很多,到时候找组合会很麻烦,SQL调优会很吃力,所以尽量每个查询都写一个(分页除外),如果实在需要IF...TEST
、あまり多くは推奨しないでくださいif判定は決まった方法で書けばそれほど遅くはなりませんが、動作しない場合はビューを使用してください
キャッシュが必要です。効率にあまり影響を与えるべきではありません。
さらに、N 個の条件がある場合、対応する条件の組み合わせは何個必要になりますか?
1. クエリ関数では where の後に多くの if テスト条件があることがよくあります。また、MyBatis は if テスト タグ関数を提供しているため、複数の SQL を記述してから Java コードを使用してオフロードを判断する場合と比べて、実行速度に大きく影響するのはデータベース サーバーとデータベース プラットフォームです。普通のプログラマーは、この問題を本当に心配する必要はありません。テスト環境に独自のコードを入れて、クエリ条件の変更を比較することもできます。キャッシュ remapResults を手動でオフにする必要があるため、クエリ結果列は効率にさらに影響します
リーリー
要約すると、機能するかどうかに関係なく、まずコードと SQL を作成してテストしましょう!