Mysql 我这样的多表查询如何提高速度 ?

时间:2023-01-31 21:25:00
我的系统有五个表,记录表(record),版位表(position),页面表(page),频道表(channel)和媒体表(medium) 
其中record表里有一条记录的信息属性(六项左右,包括名称等)以及关联联的版位表的positionId   , 
版位表又有关联页面表的pageId和版位名称, 
页面表包括关联channel表的channelId和频道名称, 
频道表包括关联媒体表的meidumId和媒体名称。 

我要查询的信息是某些符合在某个媒体、某个频道的所有记录,而且要显示出这条记录所在的版位、页面、频道、媒体的名称。 




记录表中有几十万的记录数,版位表也有几千个记录,通过连表直接查询速度好慢,有没有其他比较好的方法查询?
我要能比较快速的查询方法.

10 个解决方案

#1


把你的查詢語句貼出來看看

#2


select mediumname,channelname,pagename,posistionname,recordname form record,position,page,channel,medium where position.positionId=record.positionId and position.pageId=page.pageId and page.channelId=channel.channelId and channelId.mediumId=medium.mediumId;

之后where按查询条件还跟着mediumId=多少等信息,要是全搜索就是上面这个了.

#3


用left join来连接表,把数量少的放在最先查询的地方

#4


错,按照LZ的意思应该用 INNER JOIN

#5


left join 也不是什么情况下都效率高的

#6


就算左连接速度,记录太多了,难道就没有别的方法了?

#7


该回复于2007-12-14 10:16:55被版主删除

#8


考虑以下用临时表

#9


如何用临时表呢?

因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(select   mediumname,channelname,pagename,posistionname,recordname   form   record,position,page,channel,medium   where   position.positionId=record.positionId   and   position.pageId=page.pageId   and   page.channelId=channel.channelId   and   channelId.mediumId=medium.mediumId)这个,

我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。

#10


你自己先EXPLAIN以下。看看这个连接是怎么用的。然后建立适当的索引。

#1


把你的查詢語句貼出來看看

#2


select mediumname,channelname,pagename,posistionname,recordname form record,position,page,channel,medium where position.positionId=record.positionId and position.pageId=page.pageId and page.channelId=channel.channelId and channelId.mediumId=medium.mediumId;

之后where按查询条件还跟着mediumId=多少等信息,要是全搜索就是上面这个了.

#3


用left join来连接表,把数量少的放在最先查询的地方

#4


错,按照LZ的意思应该用 INNER JOIN

#5


left join 也不是什么情况下都效率高的

#6


就算左连接速度,记录太多了,难道就没有别的方法了?

#7


该回复于2007-12-14 10:16:55被版主删除

#8


考虑以下用临时表

#9


如何用临时表呢?

因为这个查询要经常用,所以那段连表的语句会经常使用的,就是(select   mediumname,channelname,pagename,posistionname,recordname   form   record,position,page,channel,medium   where   position.positionId=record.positionId   and   position.pageId=page.pageId   and   page.channelId=channel.channelId   and   channelId.mediumId=medium.mediumId)这个,

我本来想把所用的信息都建一个视图,就是用上面语句建的视图,然后查找视图里符合条件的语句,但是视图也是用的时候才连表的,速度基本没有快到,多建一个表又会数据冗余,出现修改是数据的不一致,现在都不知道怎么办。

#10


你自己先EXPLAIN以下。看看这个连接是怎么用的。然后建立适当的索引。