java - 有关mybatis里面对同一张表的操作的疑惑
PHP中文网
PHP中文网 2017-04-18 10:28:32
0
4
520

比如:
查询会员列表的话,where后面带很多个if test条件是不是会影响效率,还是重写个sql,但是如果每个条件查询都重写sql,sql又太多了,显得很乱。该怎么选择?

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(4)
Peter_Zhu

L'efficacité ne sera pas beaucoup affectée. Après tout, ce sont toutes des opérations de mémoire. Le plus gros problème avec Mybatis dynamique SQL est que s'il y a trop de IF...TEST, la maintenance ultérieure sera très fatigante, comme il y a de nombreux appelants pour un SQL , il sera très difficile de trouver une combinaison, et le réglage SQL sera très difficile, alors essayez d'en écrire un pour chaque requête (sauf la pagination si vous en avez vraiment besoin IF...TEST). , il est recommandé de ne pas en avoir trop

左手右手慢动作

Il ne serait pas trop lent d'écrire un jugement if d'une manière définie, mais si cela ne fonctionne pas, utilisez une vue

Peter_Zhu

Il doit y avoir un cache, ce qui ne devrait pas trop affecter l'efficacité.
De plus, s'il y a N conditions, alors il y a 2^N combinaisons de conditions correspondantes. Combien de SQL différents devez-vous écrire ?

迷茫

1. Il est très courant d'avoir plusieurs conditions de test if après où dans la fonction de requête, et il est également courant d'avoir plus de dix ou vingt conditions de requête
2 Puisque MyBatis fournit la fonction de balise de test if ; , il doit y en avoir. Il a été optimisé, et c'est certainement beaucoup plus efficace que d'écrire plusieurs SQL puis de juger et de contourner le code Java
3. Le plus grand impact sur la vitesse d'exécution est la configuration matérielle du serveur de base de données et du serveur de base de données. plate-forme de base de données. En tant que programmeur ordinaire, vous n'avez pas besoin de trop réfléchir. Si vous êtes vraiment préoccupé par ce problème, vous pouvez également mettre votre propre code dans l'environnement de test pour les tests de stress. dans les conditions de requête, les modifications dans les colonnes de résultats de la requête affectent davantage l'efficacité car elles doivent être fermées manuellement. Mise en cache remapResults
.

<select id="verificationCode_select" parameterClass="String" resultClass="HashMap" remapResults="true">$sql$</select>
Pour résumer, que cela fonctionne ou non, écrivons le code et le SQL et testons-le d'abord !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal