---- 方法一:一共10张表关联,返回行数57962,用时9秒
select
User_Name,User_Type_Name,User_Role_Name,User_Grade_Name
,Courses_Name,Courses_Attribute_Name,Courses_Product_Name,Courses_Category_Name
,Year,Month,Date
from factLoginCourses a
inner join dimUser b on a.User_key=b.User_key
inner join dimCourses c on a.Courses_Key=c.Courses_Key
inner join dimUserGrade f on b.UserGrade_Key=f.UserGrade_Key
inner join dimUserRole g on b.UserRole_Key=g.UserRole_Key
inner join dimUserType h on b.UserType_Key=h.UserType_Key
inner join dimCoursesProduct i on c.CoursesProduct_key=i.CoursesProduct_key
inner join dimCoursesAttribute j on c.CoursesAttribute_key=j.CoursesAttribute_key
inner join dimCoursesCategory k on c.CoursesCategory_key=k.CoursesCategory_key
inner join dimDate m on a.Date_Key=m.Date_Key
---- 方法二:我把一些属性直接合并到相对应的表里了,一共4张表关联,返回行数57962,却用时15秒
select
User_Name,UserType_Name,UserRole_Name,UserGrade_Name
,Courses_Name,CoursesAttribute_Name,CoursesProduct_Name,CoursesCategory_Name
,Year,Month,Date
from factLoginCourses a
inner join dimUserInfo b on a.User_key=b.User_key
inner join dimCoursesInfo c on a.Courses_Key=c.Courses_Key
inner join dimDate m on a.Date_Key=m.Date_Key----这是什么原因呢??理论上我减少了连接次数,应该更快才对呀
inner join的表中,下面的语句比上面多出两个表:
----inner join dimUserInfo b on a.User_key=b.User_key
----inner join dimCoursesInfo c on a.Courses_Key=c.Courses_Key这样确实是不具备可比性的。
dimUserInfo ,dimCoursesInfo 与原来的 dimUser ,dimCourses是一样的,就是改了一下名字,把里面对应的类型有ID换成了Name,这样就减少了需要查看Name是还需要join另外一张表
数据行数没有增加的
我现在是为了减少关联,直接把type,Role,Grade合并到dimUser中,构成dimUserInfo表,行数没有增加,列数也没有增加,就是把原来作为外健的User_Typ_ID,User_Role_ID,User_Grade_ID,换成对应User_Typ_Name,User_Role_Name,User_Grade_Name。
dimCourses表也是一样,合并了3张表
理论上应该会快呀,怎么反而慢了呢?
如果存为txt文件是70兆,
用时8秒,算正常吗?
a-b-c-d和 这样连
a-b-d
|
c查询的速度会不会不一样?
貌似后者快?