fix(database): 修复导航查询中的数据库连接条件问题
- 为父级导航连接添加删除状态和租户ID过滤条件 - 移除模型连接中不必要的 c.model = 0 条件以避免字符串转数字比较 - 为模型连接添加删除状态和租户ID过滤条件 - 添加注释说明原条件导致的性能问题
This commit is contained in:
@@ -6,8 +6,9 @@
|
|||||||
<sql id="selectSql">
|
<sql id="selectSql">
|
||||||
SELECT a.*, b.title as parentName, b.position as parentPosition, c.name as modelName
|
SELECT a.*, b.title as parentName, b.position as parentPosition, c.name as modelName
|
||||||
FROM cms_navigation a
|
FROM cms_navigation a
|
||||||
LEFT JOIN cms_navigation b ON a.parent_id = b.navigation_id
|
LEFT JOIN cms_navigation b ON a.parent_id = b.navigation_id AND b.deleted = 0 AND b.tenant_id = a.tenant_id
|
||||||
LEFT JOIN cms_model c ON a.model = c.model AND c.model = 0
|
<!-- c.model = 0 会触发 MySQL 字符串转数字比较,导致几乎所有模型都匹配,从而把导航行成倍放大 -->
|
||||||
|
LEFT JOIN cms_model c ON a.model = c.model AND c.deleted = 0 AND c.tenant_id = a.tenant_id
|
||||||
<where>
|
<where>
|
||||||
<if test="param.navigationId != null">
|
<if test="param.navigationId != null">
|
||||||
AND a.navigation_id = #{param.navigationId}
|
AND a.navigation_id = #{param.navigationId}
|
||||||
|
|||||||
Reference in New Issue
Block a user