一个关于一个表同时关联另一个表多个字段的查询有关问题
一个关于一个表同时关联另一个表多个字段的查询问题。
各位大牛早上好,小弟在这里请教一个问题。
一个Sql的查询问题
我这里有一个User表,里面两个字段和数据字典表关联,一个人员类型UserType一个区域类型AreaType
这个表的两个字段同时关联数据字典表
那么我查询视图的时候是这样查询比较好?
Select (Select DicName From B Where B.DicID = A.UserType) As UserType,(Select DicName From B Where B.DicID = A.AreaType) As AreaType From User As A,DicTable As B
还是这样好?
Select A.*,B.DicName as 'UserTypeName',C.DicName as 'AreaTypeName' from User A left join DicTable B on A.UserType=B.DicID left join DicTable C on A.AreaType=C.DicID
还是有更好的查询方式?
------解决方案--------------------
------解决方案--------------------
推荐写法2,
------解决方案--------------------
LFET JOIN的写法如果在连接字段上加索引 效率会比较高
但是这个与数据量还有关系
如果是大数据量 LEFT JOIN 的效率会高
具体情况也可以看看执行计划。
各位大牛早上好,小弟在这里请教一个问题。
一个Sql的查询问题
我这里有一个User表,里面两个字段和数据字典表关联,一个人员类型UserType一个区域类型AreaType
这个表的两个字段同时关联数据字典表
那么我查询视图的时候是这样查询比较好?
Select (Select DicName From B Where B.DicID = A.UserType) As UserType,(Select DicName From B Where B.DicID = A.AreaType) As AreaType From User As A,DicTable As B
还是这样好?
Select A.*,B.DicName as 'UserTypeName',C.DicName as 'AreaTypeName' from User A left join DicTable B on A.UserType=B.DicID left join DicTable C on A.AreaType=C.DicID
还是有更好的查询方式?
------解决方案--------------------
--我觉得这个好
Select A.*,B.DicName as 'UserTypeName',C.DicName as 'AreaTypeName'
from User A
left join DicTable B on A.UserType=B.DicID
left join DicTable C on A.AreaType=C.DicID
------解决方案--------------------
推荐写法2,
Select A.*,
B.DicName as 'UserTypeName',
C.DicName as 'AreaTypeName'
from [User] A
left join DicTable B on A.UserType=B.DicID
left join DicTable C on A.AreaType=C.DicID
------解决方案--------------------
LFET JOIN的写法如果在连接字段上加索引 效率会比较高
但是这个与数据量还有关系
如果是大数据量 LEFT JOIN 的效率会高
具体情况也可以看看执行计划。