فهرست منبع

WAS项目规范 添加whereHas的慎用说明和解决方案

ajun 5 سال پیش
والد
کامیت
72e051a3fe
1فایلهای تغییر یافته به همراه3 افزوده شده و 0 حذف شده
  1. 3 0
      文档/WAS项目规范.md

+ 3 - 0
文档/WAS项目规范.md

@@ -81,6 +81,9 @@
 	模型关系的定义
 	    注意相互的从属关系:hasOne是父模型对于子模型的定义,belongsTo是子模型对于父模型的声明(一般而言:本表存在关联表的外键使用belongsTo,关联表存在本表的外键使用hasOne)
 	    建议:对于超长模型命名可忽略同级的前缀。(示例:user与userLog 模型关系可直接称之log)
+    关联查询
+        慎用whereHas进行查询,whereHas生成的sql是 where exists 进行关联查询,当左表大于由右表时,左表就会成为性能瓶颈。where exists 会将右表查出来的结果同左表匹配。查出多少条就会匹配多少次。而且不走索引的全表扫描。
+        建议先查出右表,再根据关联关系查左表。 
 ##控制台命令
 	将命令的实际逻辑写成Service方法,方便复用调用和测试
 ##数据库